运算符和if判断
一、赋值运算
1.增量赋值
常用操作:+= 、 -= 、 *= 、 /= 、 //= 、%= 、**=
age = 18
age += 1 # age = age + 1
age *= 2 # age = age * 2
2.交叉赋值
x = 10
y = 11
现在要将x和y的值对调:
普通代码:
temp = x
x = y
y = temp
使用交叉赋值操作(一行搞定):
x, y = y, x
3.链式赋值 : 一次完成多个变量名的赋值(同一个值)
z = y = x = 10 # 一次完成多个变量名的赋值(同一个值)
4.解压赋值
l = [1,2,3,4,5]
a,b,c,d,e = l # a = 1, b = 2, c = 3, d = 4, e = 5
a,b,*_ = l # a = 1, b = 2, _=[3,4,5] _一般是不需要的部分
*_, a = l # a = 5, _ = [1,2,3,4]
a, *-, b = l # a = 1, b = 5, _=[2,3,4]
注意点:解压赋值的变量名与值的个数必须一一对应,不能多也不能少
二、 逻辑运算符
not 、 and 、or
作用:连接多个条件
1.条件:能得到True或者False的个体、代码都是条件
(1) 显式的布尔值:
表面上就能看出是True或者False的
① 变量值直接就是布尔值:
tag = True
② 通过比较运算得到
print(10 > 5) # >>>True
1.2 隐式的布尔值
表面上看是一个值,实际会被底层解释器转换成布尔值,其中:
只有 0,None, 空(空字符串、空列表等) 对应的布尔值为False,
其余都是True
2.逻辑运算符
(1) not 条件:
对条件的布尔值取反
print(not 3 > 1)
(2) 条件1 and 条件2:
连接左右两个条件,两个条件都为真,结果才为True,否则结果为False
print(10 >9 and not True) # >>>False
(3) 条件1 or 条件2:
连接左右两个条件,两个条件都为假,结果才为False,否则结果为True
print(10 > 4 or 10 < 5) # >>>True
(4) 优先级:
not > and > or,推荐使用括号来标识优先级
如:
print(10 > 4 and not True and "aaa" != "aab" or 13 - 1 < 14 or 11 > 10 ) # >>>True
-
短路运算(偷懒行为):
当 条件1 and 条件2 中的条件1为假时,条件2就不会被运算,结果直接为False 当 条件1 or 条件2 中的条件1为真时,条件2就不会被运算,结果直接为True
print(-31 and 2 or 1 or 4) # >>> 2
三、流程控制之if判断
完整语法:
if 条件1:
代码块1
elif 条件2:
代码块2
elif 条件3:
代码块3
...
else:
代码块4
语法1:
num1 = input("请输入数字1:").strip()
num2 = input("请输入数字2:").strip()
if num1 > num2:
print(num1)
print("后续代码") # 后续代码在if判断完成以后继续运行
语法2:
num1 = input("请输入数字1:").strip()
num2 = input("请输入数字2:").strip()
if num1 > num2:
print(num1)
else:
print(num2)
print("后续代码") # 后续代码在if判断完成以后继续运行
语法3:
num = input('成绩:').strip()
num = int(num)
if num >= 90:
print("优秀")
elif num >= 80: # num经过了上面的判读已经不满足条件num>=90,所以不用写成 80 <= num < 90
print('良好')
elif num >= 60: # 同理,能判断到这一步就说明num不符合上面的条件
print('及格')
else:
print('不及格')
语法4:if 判断的嵌套
num = input("当日完成任务数目:").strip()
num = int(num)
if num > 10:
if num > 20:
print("牛逼,超额完成")
else:
print("完成任务")
else:
print("任务未完成")
print("后续代码") # if判断完成后,后续代码继续运行