day02快速上手

课程目标:学习Python最基础的语法知识,可以用代码快速实现一些简单的功能

课程概要:

  • 初识编码(密码本)
  • 编程体验
  • 输出
  • 初识数据类型
  • 变量
  • 注释
  • 输入
  • 条件语句

1. 编码

计算机中所有的数据本质上都是以0和1的组合来存储

在计算机中有这么一个编码的概念(密码本)

每种编码都有自己的一套密码本,都维护自己的一套规则,如:
utf-8编码:
刘   ->    01111111 000110101 0100110101
小	  ->    01000100 000011100 1011001010
伟   ->    10101011 011110100 1110011101
gkb编码
刘   ->    00010111 110100111 1101001001
小	  ->    01000100 000011100 1011001010
伟   ->    11101101 111010110 0101100110
所以,使用的不同的编码保存文件时,硬盘的文件中存储的0/1也是不同的

注意:以某个编码的形式保存文件,以后就要以这种编码去打开这个文件,否则就会出现乱码

2. 编程体验

  • 编码必须要保持:保存和打开一致,否则会乱码
  • 默认Python解释器UTF-8编码的形式打开文件。如果想要修改Python的默认解释器编码,可以如下形式:
# -*- coding:gbk -*-
print('我是你二大爷')
  • 建议:所有Python代码文件都以UTF-8编码保存和读取。

3. 输出

将结果或内容想要呈现给用户

print("看着风景美如画")
print(adidas)

关于输出

  • 默认print在尾部会加换行符
print('看这风景美如画')
print('本想吟诗赠天下')

输出:
  看这风景美如画
  本想吟诗赠天下
  • 想要补换行,可以这样做:
print('看这风景美如画', end='')
print('本想吟诗赠天下', end='')

输出:
看这风景美如画本想吟诗赠天下

练习题

print('输出自己的姓名:刘小伟')

# 换行输出
print('春眠不觉晓,')
print('处处闻啼鸟。')
print('夜来风雨声,')
print('花落知多少。')

# 一行输出
print('春眠不觉晓,', end='')
print('处处闻啼鸟。', end='')
print('夜来风雨声,', end='')
print('花落知多少。', end='')

输出:
输出自己的姓名:刘小伟
春眠不觉晓,
处处闻啼鸟。
夜来风雨声,
花落知多少。
春眠不觉晓,处处闻啼鸟。夜来风雨声,花落知多少。

4. 初识数据类型

4.1 整型(int)

整型、整数

整型,其实就是以前数学课上讲的整数(不包含小数),在写代码时用于表示整数相关的东西,例如:年龄、存款、尺寸、手机号等。一般我们提到的:5、18、22、99…等整数在Python中都称为整型,且支持加/减/乘/除/指数等操作。

print(666)

print(2 + 10)

print(2 * 10)

print(20 / 4)

print(10 % 3)

print(5 // 3)

4.2 字符串(str)

字符串,其实就是我们生活中等文本信息,例如:姓名,地址,自我介绍等

字符串有一个特点,必须由引号引起来,如:

单行字符串

print("我是Bruce_liu")

print('中国北京昌平区')
      

输出:
我是Bruce_liu
中国北京昌平区

多行字符串

print('''dfasfsakfjsakjfajfksa;kfsad;klfafas;
fasfjsakfsklafjklsa
fsadjksa;fasjdkfa;f;sa;f
fdsajklfjdas;f''')
  
输出:
dfasfsakfjsakjfajfksa;kfsad;klfafas;
fasfjsakfsklafjklsa
fsadjksa;fasjdkfa;f;sa;f
fdsajklfjdas;f

对于字符串,运算符只支持两种:

  • 加, 两个字符串可以通过加号拼接起来
"alex" + '是金角大王吧'
'alex是金角大王吧'

print("alex" + '是金角大王吧')
print('alex是金角大王吧')

输出:
alex是金角大王吧
alex是金角大王吧
  • 乘,让整型和字符串进行相乘,以实现让字符串重复出现N次并拼接起来
print('我想吃饺子' * 3)

输出:
我想吃饺子我想吃饺子我想吃饺子

4.3 布尔类型(bool)

布尔类型总共两个值:True / False

1 > 2
1 == 1

输出:
False
True
name = input('请输入用户名:')
if name == 'Alex':
    print('用户登陆成功!')
else:
    print('用户登陆失败!')

4.4 类型转换

上文数据类型int/str/bool有了初步了解,他们都有自己不同的定义方式。

  • int,整型定义时,必须是数字且无引号,例如:5、8、9
  • str,字符串定义时,必须用双引号括起来,例如:“中国”、“刘小伟”、“666”
  • bool,布尔值定义时,只能写True和False

不同的数据类型都有不同的功能,例如:整型可以加减乘除而字符串只能加(拼接)和乘法。

如果想要做转换可遵循一个基本规则:想转换什么类型就让它包裹一下。例如:str(666)是将整型转换为字符串、int(‘888’)是将字符串转为整型。

转为整型:

# 字符串转换整型
int("666")
int('999')
"6" + "9" 结果是"69"
int("6") + int("9") 结果是15


# 布尔类型转换为整型
int(True)	转换完等于1
int(False) 转换完等于0

转换为字符串

# 整型转换为字符串
str(345)
str(666) + str(9) 结果为6669

# 布尔类型转换为字符串
str(True)   "True"
str(False)  "False"

转化为布尔类型

# 整型转布尔
bool(1) True
bool(2) True
bool(0) False
bool(-10) True

# 字符串转布尔类型
bool('alex') True
bool('fdasfda') True
bool('') False
bool(' ')  True

三句话搞定类型转换

  • 其他所有类型转换为布尔类型时,除了空字符串、0以外其他都是True
  • 字符串转整型时,只有那种“988”(数字型)格式的字符串才能转为整型,其他都报错
  • 想要转为哪种类型,就用这类型的英文包裹一下就行
str(...)
int(...)
bool(...)

注意:类型转换不是改变原来值,实际在底层是新创建了一个值。例如有整数6,然后使用str(6)转化了一下得到“6”,实际上这个字符串“6”是依据整数6新创建的。

练习题
  1. 计算整型50乘以10再除以5的商并使用print输出
  2. 判断整型8是否大于10的结果并使用print输出
  3. 计算整型30除以2得余数并使用print输出
  4. 使用字符串乘法实现把字符串“我爱我的祖国”创建三遍并拼接起来最终使用
  5. 判断字符串"liuxiaowei"和"bruce"是否相等的结果并使用print输出
  6. 判断整型666和整型666是否相等的结果并使用print输出
  7. 判断字符串"666"和整型666是否相等的结果并使用print输出
  8. 看代码写结果(禁止运行代码)
print(int("100")*3)             300
print(int("123") + int("88"))   211
print(str(111)+str(222))  "111222"
print(str(111)*3)     "111111111"
print(int("8")>7) True
print(str(111) == 111) False
print(bool(""))   False
print(bool(-1)) True
print(bool(0)) False
print(bool("你好")) True
print(True == True) True
print(True == False) False
print(bool("") == bool(0)) True
print(50 * 10 / 5)

print(8 > 10)

print(30 % 2)

print('我爱我的祖国' * 3)

print('liuxiaowei' == 'alex')

print(666 == 666)

print(666 == str(666))


输出:
100.0
False
0
我爱我的祖国我爱我的祖国我爱我的祖国
False
True
False

5 .变量

变量,其实就是我们生活中起别名和外号,让变量名指向某个值,格式为:【变量名=值】,以后可以通过变量名来操作对应的值。

name = "刘小伟"
print(name)  # 刘小伟
age = 18
name = 'alex'
flag = 1 > 18
address = '北京昌平' + '沙河' + name  # "北京昌平沙河alex"

print(addr)
print(flag)
age = 18
number = 1 == 2    # False

注意:

  • 给变量赋值 age = 18
  • 让age代指 age =18

5.1 变量名的规范

age = 18
name = 'alex'
flag = 1 > 18
address = '北京昌平' + '沙河'

三个规范:

  • 变量名只能由字母、数字、下划线组成
  • 变量名不能以数字开头
na9me9 = "alex"
  • 不能用Python内置的关键字
def = 'alex'
break = 123

[‘and’, ‘as’, ‘assert’, ‘break’ , ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘except’, ‘exec’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’,‘not’, ‘or’, ‘pass’, ‘print’, ‘raise’, ‘return’,‘try’, ‘while’, ‘with’, ‘yield’]

两个建议:

  • 下划线连接命名(小写)
father_name = 'liuxiaowei'
brother_age = 19
  • 见名知意
age = 18
color = 'red'
current_user_name = '吉诺比利'
n1 = 123    # 不可取
n2 = 456    # 不可取
练习题
name = '吉诺比利'
name0 = '帕克'
name_1 = '波波维奇'
_coach = '邓肯' 
_ = '卡哇伊'
1_year = '1990'  # 错误
_1_year = '1990'
nba-team = '马刺' # 错误
new*name = '伦纳德'  # 错误

5.2 变量内存指向关系

通过学习上述变量知识让我们对变量有了初步认识,接下来我们就要从稍高级一些的角度来学习变量,即:内存指向(在电脑的内存中是怎么存储的)

情景一

name = 'liuxiaowei'

在计算机的内存中创建一块区域保存字符串’liuxiaowei’, name变量名则指向这块区域。


Python学习笔记---day02快速上手_学习

情景二

name = 'liuxiaowei'
name = 'alex'

在计算机的内存中创建一块区域保存字符串’liuxiaowei’, name变量则指向这块区域。然后又在内存中创建了一块区域,然后又在内存中创建了一块区域保存字符串’alex’, name变量名则指向’alex’,不再指向’liuxiaowei’所在区域(无人指向的数据会被标记为垃圾,由解释器自动回收)


Python学习笔记---day02快速上手_python_02

情景三

name = 'liuxiaowei'
new_name = name

在计算机的内存中创建一块区域保存字符’liuxiaowei’, name变量名则指向这块区域。new_name变量名指向name变量,因为被指向的变量名,所以自动会转指向到name变量代表到内存区域


Python学习笔记---day02快速上手_字符串_03

情景四

name = "liuxiaowei"
new_name = name
name = 'alex'

在计算机的内存中创建一块区域保存字符串"liuxiaowei", name变量名则指向这块区域(灰色线),然后new_name指向name所指向的内存区域,最后又创建了一块区域存放’alex’,让name变量指向’alex’所在区域


情景五

num = 18
age = str(num)

在计算机的内存中创建一块区域保存整型18,name变量名则指向这块区域。通过类型转换依据整型18再在内存创建一个字符串“18”,age变量指向保存这个字符串的内存区域


练习题

  1. 看代码结果
alex_length = 3
liuxiaowei_length = 18
total = alex_length + liuxiaowei_length
print(total)

输出:
21
  1. 按要求写代码
# 假设age为小明的年龄
age = 18
# 问:已知小李比小明大3岁,计算小李年龄赋值给ming_age 变量并输出
xiaoli_age = age + 3
ming_age = xiaoli_age
print(ming_age)
# 问:已知大刘比小明和小李年龄大和还要大5岁,计算大刘的年龄赋值给liu_age变量并输出
liu_age = xiaoli_age + ming_age + 5
print(liu_age)
  1. 看代码写结果
nickname = '一米八大高个'
username = nickname

nickname = '弟弟'
print(nickname)  # ‘弟弟’
print(username)   # '一米八大高个'
  1. 看代码写结果
nickname = '一米八大高个'
username = nickname
nickname = '弟弟'


print(nickname)  # ‘弟弟’
print(username)   # '一米八大高个'
  1. 看代码写结果
nickname = '一米八大高个'
username = '弟弟'
text = username + nickname
print(text)   #'弟弟一米八大高个'
  1. 看代码写结果
nickname = '一米八大高个'
username = nickname
nickname = '弟弟'

text = username + nickname
print(text)  # '一米八大高个弟弟'
  1. 看代码写结果
string_number = '20'
num = int(string_number)

data = string_number * 3
print(data)  # '202020'

value = num * 3
print(value)  #60

6. 注释

写代码的时候,如果想要对某些内容进行注释,即:解释器忽略不会按照代码去进行。

  • 单行注释
# 声明一个name的变量
name = 'alex'

age = 19 # 这表明当前用户的年龄

注意:快捷键 command + ?(mac)、 control + ?(windows)
  • 多行注释
"""
多行注释
多行注释
"""

7. 输入

输入,可以实现程序和用户之间的交互 。

# 1. 右边input('请输入用户名:')是让用户输入内容
# 2. 将用户输入的内容赋值给name变量

name = input('请输入用户名:')

if name == 'alex':
	print('登陆成功!')
else:
  print('登陆失败!')
data = input(">>>")
print(data)

特别注意:用户输入的任何内容本质上都是字符串

  1. 提示输入姓名,然后给姓名后面拼接一个“烧饼”,提示输入姓名,然后给姓名后面拼接一个“烧饼”,最终打印结果
name = input('请输入姓名:')
name = name + '烧饼'
print(name)

输出:
请输入姓名:alex
alex烧饼
  1. 提示输入姓名/位置/行为,然后做拼接并打印:xx在xx做xx
name = input('请输入姓名:')
address = input('请输入位置:')
action = input('请输入行为:')

text = name + '在' + address + action
print(text)
  1. 提示输入两个数字,计算两个数字的和
num1 = input('请输入一个数字:')  # '1' 
num2 = input('请输入一个数字:')  # '2'

value = num1 + num2  
print(value)

8. 条件语句

if 条件:
	条件成立之后的代码...
  条件成立之后的代码...
  条件成立之后的代码...
else:
  条件不成立之后执行的代码...
  条件不成立之后执行的代码...
  条件不成立之后执行的代码...
name = input('请输入姓名:')
if name == 'alex':
  print('sb')
else:
  print('db')

提醒:统一缩进问题(都是使用四个空格 = tab)

8.1 基本条件语句

  • 示例1
print('开始')
if True:
	print('123')
else:
  print('456')
 
print('结束')

输出结果:
开始
123
结束
  • 示例2
print('开始')
if 5 == 5:
	print('123')
else:
  print('456')
 
print('结束')
  • 示例3
num = 19
if num > 10:
  print('num 变量对应值大于10')
else:
  print('num变量对应值不大于10')
  • 示例4
usernam = 'liuxiaowei'
password = '666'
if username == 'liuxiaowei' and password == '666':
  print('恭喜你,登陆成功')
else:
  print('登陆失败')
  • 示例5
username = 'liuxiaowei'

if username == 'liuxiaowei' or username == 'alxex':
  print('VIP大会员用户')
else:
  print('普通用户')
  • 示例6
number = 19
if number % 2 == 1:
  print('number是奇数')
else:
  print('number是偶数')
number = 19
data = number % 2 == 1
if data:
  print('number是奇数')
else:
  print('number是偶数')
  • 示例7
if 条件:
	成立
print('开始')
if 5 == 5:
  print('5等于5')
print('结束')
练习题
  1. 提示用户输入用户名和密码,用户名等于‘liuxiaowei’且密码等于’uuu’就输出登录成功,否则输出登录失败
username = input('输入用户名:')
password = input('输入密码:')

if username == 'liuxiaowei' and password == 'uuu':
    print(f'{username}登录成功')
else:
    print(f'{username}登录失败')
  1. 猜数字,提示用户输入一个数字,判断数字如果大于10, 就输出猜错了;否则输出猜错了
number = input('请输入一个数字:')
if int(number) > 10:
    print('猜错了')
else:
    print('猜对了')
  1. 提示用户输入一个数字,判断是否为偶数,是偶数则输出偶数,否则输出奇数
number = input('请输入一个数字:')
data = int(number) % 2 == 0
if data:
    print(f'{number}是偶数')
else:
    print(f'{number}是奇数')

8.2 多条件判断

if 条件A:
	A成立,执行此缩进中的所有代码
  ...
elif 条件B:
  B成立,执行此缩进中的所有代码
  ...
elif 条件C:
  C成立,执行此缩进中的所有代码
  ...
else:
  上述ABC都不成立
num = input('请输入数字:')
data = int(num)
if data > 6:
  print('太大了')
elif data == 6:
  print('刚刚好')
else:
  print('太小了')
score = input('请输入分数:')
data = int(score)

if data > 90:
  print('优')
elif data > 80:
  print('良')
elif data > 70:
  print('中')
elif data > 60:
  print('差')
else:
  print('不及格')

8.3 条件嵌套

if 条件A:
	...
elif 条件B:
  ...
if 条件A:
	if 条件A1:
    ...
  else:
    ...
elif 条件B:
  ...

模拟10086客服

print('欢迎致电10086, 我们提供如下服务:1.话费相关;2.业务办理;3.人工服务')

choice = input('请选择服务序号:')

if choice == '1':
    print('话费相关业务')
    cost = input('>>>\n查询话费请按1;交话费按2')
    if int(cost) == 1:
        print('查询话费余额为100')
    elif int(cost) == '2':
        print('交话费')
elif choice == '2':
    print('业务办理')
elif choice == '3':
    print('人工服务')
else:
    print('序号输入错误')

总结

  1. 什么是编码?打开文件时为什么会出现乱码?
  2. pycharm如何设置文件编码
  3. python解释器去打开代码文件时,默认使用编码是什么?如何修改?
  4. print输入
  5. 各数据类型格式以及相关之间如何实现转换
  6. 变量的命名规范
  7. 用户通过input输入的内容均为字符串类型
  8. 条件语句

今日作业

  1. 谈谈你了解的编码以及为什么会出现乱码的现象?
  2. Python解释器默认编码是什么?如何修改?
默认编码:utf-8
在文件顶部通过设置:# -*- coding=编码 -*- 实现修改
  1. 用print打印出下面内容
文能提笔安天下,
武能上马定乾坤。
心存谋略何人胜,
古今英雄唯是君。
print('文能提笔安天下,')
print('武能上马定乾坤。')
print('心存谋略何人胜,')
print('古今英雄唯是君。')


print('文能提笔安天下,', '\n武能上马定乾坤。', '\n心存谋略何人胜,', '\n古今英雄唯是君。')
  1. 变量名的命名规范和建议?
  2. 如下哪个变量名是正确的?
name = '刘小伟'
_ = 'alex'
_9 = '老男孩'
9name = '宝浪' # 错误
oldboy(edu = 666 # 错误 出现了字母、数字、下划线以外的字符
  1. 设定一个理想数字比如:66, 让用户输入数字,如果比66大,则显示猜测结果正确
num = input('>>> \n输入一个数字:')
if int(num) > 66:
    print('大了')
elif int(num) < 66:
    print('小了')
elif int(num) == 66:
    print('正确')
  1. 提示用户输入"爸爸",判断用户输入的对不对,如果对,提示真聪明,如果不对,提示你是傻逼么
person = input('>>> 输入爸爸:')
if person == '爸爸':
    print('傻逼吗')
else:
    print('真聪明')
  1. 写程序,成绩有ABCDE5个等级,与分数的对应关系如下:
A 90-100
B 80-89
C 60-79
D 40-59
E 0-39

要求用户输入0-100的数字后,你能正确打印他的对应成绩等级

score = input('>>> 输入成绩:')
if int(score) >= 90 and int(score) <= 100:
    print('A')
elif int(score) >= 80 and int(score) < 90:
    print('B')
elif int(score) >= 60 and int(score) < 80:
    print('C')
elif int(score) >= 40 and int(score) < 60:
    print('D')
elif int(score) >= 0 and int(score) < 40:
    print('E')
else:
    print('错误')