关于python第6讲课后练习题
请用最快速度说出答案:not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9(not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9)
== 0 or 0 or 4 or 6 or 9
==4
这里为什么等于4呢,看小甲鱼的解释有点看不懂,求大神解答一下,谢谢! 运算符优先级:
not > and > or
所以上面哪一行代码的解释本质就是优先级高的加个括号 1.优先级,2.短路原则
优先级见2楼。
短路原则:对于or如果前一个为True,就不用判断后一个了。如 3 or 4,前面为3是True,就不用再看4了,结果为True,返回3;如 4 and 5,前面为4是True,还要判断后面的,后面5为True,则结果为True,返回5 无非就是优先级别和短路原则
对于优先级没什么可说的(not > and > or)
对于短路原则,两句话概括:
1.就 and 而言,有0则0(即只要有假的,就返回该假值,后面的就不用看了;全为真的则返回最后一个)举例:
print('hello' and [] and 5 and '' and False)# 返回[]
print(9 and 1 and True)# 返回True
2.就 or 而言,有1则1(即只要有真的,就返回该真值,后面的就不用看了;全为假的则返回最后一个)举例:
print(0 or 'hello' or True or '')# 返回hello
print(0 or [] or '' or False)# 返回False 我打了草稿,加上楼上的给你的回复,你可以看下,字写的丑了的点,可能看上去不好理解{:10_245:}
https://fishc.com.cn/home.php?mod=space&uid=961263&do=album&picid=12982#pic_block qin_yin 发表于 2020-10-19 00:46
我打了草稿,加上楼上的给你的回复,你可以看下,字写的丑了的点,可能看上去不好理解
重新发下 非0即True,and中有一False则返回的是就是该False,如果两个同为True则返回第二位置 谢谢大家 and一真一假返回假,俩真返回后一个;or一真一假返回真,两真返回前一个。
页:
[1]