一、运算
1、逻辑运算符
运算符 | 表达式 | 描述 |
---|---|---|
and | x and y | “与”:如果 x 为假的值,x and y返回 x 的值,否则它返回 y 的值 |
or | x or y | “或”:如果 x 为假的值,x or y返回y的值,否则它返回 x 的值 |
not | not x | “非”:如果 x 为真的值,返回 False,如果 x 为假的值,返回True |
- 在Python中,and 和 or 不一定会计算右边表达式的值,有时候只计算左边表达式的只就能得到最终结果(短路原则)。
- or 运算短路原则:若 or 运算符左边表达式为真,直接返回左边表达式的值,右边表达式不做计算,如: 1 or 0 and 1 的结果为:1。
- and 运算短路原则:若 and 运算符左边表达式为假,整个 and 表达式的结果为左边表达式的值,右边表达式不做计算;如:0 and 1 的结果为:0。
- and 和 or 运算符会将其中一个表达式的值作为最终结果,而不一定将 True 或者 False 作为最终结果。在多个逻辑语句连用时,and 语句并不会首先计算,而是作为一个整体,等到该逻辑运算式返回 and 语句的值的时候再进行运算,如:1 or 2 and c,这里 2 and c 会作为一个整体语句A,原逻辑语句会成为 1 or 语句A,根据 or 语句运算规则,则直接返回计算值1,并不会因为没有定义变量c 而报错,这样的场景,我们称之为短路原则。
- Python中为假的数据有:False、None、0、‘’‘’、[]、()、{},除了这几个都为真。
- 针对逻辑运算符,优先级:not > and > or
print(0 and 3 or 4) print(4 or 5 and 0) print(0 and 3 or 4 and 5 or 6) print(3 or b and 5 or 6 and 7) print(0 and 3 or 4 and 5 or 6 and not 7) #4 #4 #5 #3 #5
2、常见运算符优先级
运算符 | 描述 |
---|---|
** | 指数(最高优先级) |
* / % // | 乘、除、取模华锐取整除 |
+ - | 加法减法 |
<= < > >= | 比较运算符 |
== != | 等于运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
is is not | 身份运算符 |
in not in | 成员运算符 |
not and or | 逻辑运算符 |
- 由上往下优先级越低,尽量使用()来限定运算次序,避免运算次序发生错误。
3、数值运算函数
运算符 | 描述 |
---|---|
abx(x) | x的绝对值 |
divmod(x,y) | (x//y,x%y),输出为二元组形式(也称为元组类型) |
pow(x,y)或pow(x,y,z) | xy 或者 (xy)%z,幂运算 |
round(x)或round(x,d) | 对 x 进行四舍五入,保留 d 位小数,无参数 d 则返回四舍五入的整数值 |
max(x1,x2,…xn) | x1,x2,…xn的最大值,n没有限定,可以是任意数量 |
min()x1,x2,…,xn | x1,x2,…xn的最小值,n没有限定,可以是任意数量 |
print(abs(100))
print(abs(-100))
print(divmod(5,2))
print(pow(3,2))
print(pow(3,2,2))
print(round(3.1415926))
print(round(3.1415926,2))
print(max(2,0,1,7))
print(max('h','e','l','o'))
print(max('H','E','L','O'))
print(min(2,0,1,7))
print(min('H','E','L','O'))
#100
#100
#(2, 1)
#9
#1
#3
#3.14
#7
#o
#O
#0
#E
二、嵌套语句
1、if 嵌套结构
-
在判断语句里面又有其他的判断语句,在一个条件满足的前提下,看另一个条件是否满足。
-
语法结构:
if 条件1: if 条件2: 执行语句1 else: 执行语句2 else: 执行语句3
-
例:地铁先安检,后检票。写一个程序分析一下又几种判断情况。
# 1 表示有票,0表示无票 ChePiao = 0 # 数字大小表示刀具长度 DaoChang = 11 if DaoChang<10: print("通过安检,现在开始检票!") if ChePiao == 1: print("检票成功,请准备上车!") else: print("检票失败,请重新购票!") else: print("安检未通过,请等待核查!") #安检未通过,请等待核查!
-
单分支语句嵌套时,可以用逻辑运算符 and 替换
语法结构:if 条件1: if 条件2: 执行语句
等价于
if 条件 1 and 条件 2: 执行语句
例:输入一个数字,判断是否是2 和3 的公倍数。
n=int(input('请输入一个数字:')) if n % 2 ==0: if n %3 ==0: print('是2和3的公倍数')
等价于
n=int(input('请输入一个数字:')) if n % 2 ==0 and n %3 ==0: print('是2和3的公倍数')
2、循环嵌套语句
-
类似if的嵌套,循环嵌套就是,循环里面还有循环,外层循环循环一次,内层循环循环多次。
语法结构:for 条件1: 条件1满足时,做事情1 for 条件2: 条件2满足时,做事情2
-
例:打印九九乘法表
for hang in range(1,10): for lie in range(1,hang+1): print("%d*%d=%-4d"%(lie,hang,lie*hang),end=" ") print() 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
3、while-else 或 for-else
-
else 跟 while 或 for 连用时,当循环正常结束时(没有执行break)会执行else里面的代码一旦执行了break,就不再执行else里面的代码。
for i in range(3): print(i) else: print('执行了else语句') for i in range(3): if i==2: break print(i) else: print('执行了else语句') #1 #2 #执行了else语句 #0 #1