day04-运算符,流程控制之if和input()用户交互功能
上节课复习
1.变量
python 执行的过程是一行一行的执行的,它会先检测代码的语法是否有误,有误会立马报错,而逻辑上的错误会在执行到逻辑错误的地方才报错.
今日内容
一.运算符
1.1赋值运算
age = 18
增量运算
age += 3 # age = age + 3
减量运算
age -= 2 # age = age - 2
乘除取余运算
age *= 2 # age = age * 2
age /= 2 # age = age / 2
age %= 3 # age = age % 3
链式赋值
# x = 10
# y = x
# z = y
# python中可以直接使用
x = y = z = 10 # 等同于上方的赋值结果
print(x, y, z)
print(id(x), id(y), id(z))
交叉赋值
a = 100
b = 200
# 此时我想要在将a=200 和 b=100 ,让他们交叉赋值
# 方法一:
res = b
b = a
a = res
# 方法二:
a, b = b, a
print(a, b)
解压赋值
salaries = [11, 22, 33, 44, 55, 66, 77]
# 传统方法将列表中的每一个值根据索引取值绑定给一个个的小的变量名
# mon1 = salaries[0]
# mon2 = salaries[1]
# mon3 = salaries[2]
# mon4 = salaries[3]
# mon5 = salaries[4]
# mon6 = salaries[5]
# mon7 = salaries[6]
# 将每个变量名根据列表中的值一一对应(此时要注意变量名的个数和列表的值一一匹配)
# mon1, mon2, mon3, mon4, mon5, mon6, mon7 = salaries
# print(mon1, mon2, mon3, mon4, mon5, mon6, mon7)
# *_将没匹配上的数值接收成一个列表的形式存放
# mon1, mon2, *_ = salaries
# print(mon1, mon2, _)
# *_, last2, last1 = salaries
# print(_, last2, last1)
# 只取列表中间的值
_, *middle, _ = salaries
print(middle)
1.2逻辑运算符
三种逻辑运算符not
and
or
# not 表示的是后面接的条件取反
# and 表示的是左右俩边的条件都为True时,才返回True,其他的情况都为False
# or 表示的是左右俩边的条件只要有一个为True,就返回True,当俩个条件都为False时.,才返回False
优先级的比较
# () > not > and > or
# 小技巧:当你比较一个比较复杂的语句时,把not后面的条件看出一个整体取反,然后可以将and俩边的条件用括号括起来,再比较or
练习:判断下面条件的真假:1 <= 0 or "egon" == 'Egon' and not 1 > 3 or 3 < 9 and not 9 > 22
# 1 <= 0 or "egon" == 'Egon' and not 1 > 3 or 3 < 9 and not 9 > 22 等同于===>1 <= 0 or ("egon" == 'Egon' and not 1 > 3) or (3 < 9 and not 9 > 22)
print(1 <= 0 or ("egon" == 'Egon' and not 1 > 3) or (3 < 9 and not 9 > 22)1 <= 0 or ("egon" == 'Egon' and not 1 > 3) or (3 < 9 and not 9 > 22)) # 返回True
and 和 or 运算的一条重要法则:短路计算
# 在计算 a and b 时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;
# 如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。
# 在计算 a or b 时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;
# 如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。
# 例如:在交互式python解释器下执行
'''
>>> 1 or 3
1
>>> 1 and 3
3
>>> 0 and 2 and 1
0
>>> 0 or 2 and 1
1
>>>
'''
逻辑运算偷懒技巧
# 当一个全部为and的逻辑判断,只要有一个False就为False
# 当一个全部为or的逻辑判断,只要有一个为True就为True
了解:布尔值分为俩大类
# 1. 显式的布尔值:能够明确的得到True和False,比如x=True,10>3,1=1,"jkey"=="jkey"
# 例如:
# 1 = 1 and True or False and "jkey" == "Jkey"
# 2.隐式的布尔值:所有的数据类型的值都可以当作隐式的布尔值,其中0 , None, 空的隐式布尔值为False,其余的对应的布尔值都为True
# 例如:
print(10 and 3 and 4 > 2)
print(0 and 2 or 1)
二.流程控制之if判断
2.1 if 语句中需要注意的
# 条件就是返回的结果是布尔值的
# 同一级的代码有从上往下依次执行的特点.
# 缩进0个空格的在python中表示顶级代码
# 同一个 if语句中 只会执行一个条件成立里面的子代码
2.2 if 语句中的三种分支
单分支
name, name2 = 'jkey', 'liu'
pwd = '123456'
print("starting...")
if name == "jkey" and pwd == '123456':
print('jkey 登入成功')
print("this code is end")
双分支
name, name2 = 'jkey', 'liu'
pwd = '123456'
print("starting...")
if name == "jkey" and pwd == '123456':
print('jkey 登入成功')
else:
print("用户名或者密码错误")
print("this code is end")
多分支
print("starting...")
if name == "jkey" and pwd == '123456':
print('jkey 登入成功')
elif name2 == "liu" and pwd == '123456':
print('liu 登入成功')
else:
print("该用户或者密码错误")
print("this code is end")
2.3 案例对您输入的成绩进行判断
try:
score = int(input('请输入您的成绩>>>:').strip())
if score >= 90:
print("优秀")
elif score >= 80:
print("良好")
elif score >= 70:
print('普通')
else:
print('很差')
except ValueError as e:
print('请输入数字')
三. 用户与程序交互 input
3.1 input方法的介绍
让普通用户与计算机之间进行交互,接收用户输入,我们要根据用户的输入需求,使其转化成对应的功能.
3.2 在python3 和 python2 中不同的 用法
#在python3中
input:用户输入任何值,都存成字符串类型
#在python2中
input:用户输入什么类型,就存成什么类型 # 在python中就舍弃了该功能,因为此情况下的用户还得了解你的python中的数据类型,才能和你的计算机程序交互
raw_input:等于python3的input
3.3 input的用法
input("xxx")
# 当用户输入了它的指令,input()方法会将该指令转换成字符串的类型数值返回,此时你可以用一个变量名与其绑定
# 如下:
user_input = input("XXXX") # 可以直接调用input()的方法,里面的"xxx"表示的是输出在终端上给用户交互的信息为其接收的字符串的值的变量名
3.4 案例
接收用户输入的账号和密码,判断账号和密码是否正确,成功了提示登入成功,失败了提示用户名或者密码错误
inp_name1 = input('请输入您的用户名>>>:').strip()
inp_pwd1 = input("请输入您的密码>>:").strip()
if inp_name1 == 'jkey' and inp_pwd1 == '123':
print('登入成功')
else:
print('用户名或者密码错误')
3.5 int()方法
int('number') # 将一个纯数字组成的字符串转成整形
# 例如: 将用户输入的123转换成整型的123
inp_number = input('>>>:') # 此时当你输入123,inp_number会存成字符串
inp_numbrt = int(inp_number) # 此时的inp_number为整型的数据类型