将近一个月没有写博客了,不是没有在学习,而是每天的进度,让我转不过来,但学习容不得马虎,并且会了理论不一定会解决实际问题,就像数学,你会背定义,就一定会做关于这个定义的每一道题吗,但你不断的做题后,自己在遇到同样或者相似的问题就不会没有思路,我是个普通人,不断地刷经验,就是自己野蛮增长方式。废话不说,上菜。。。
之前已经把逻辑运算的基本知识都写出来了,但在题目中往往的考点都是围绕着运算的优先顺序来做的。同类别的优先顺序,连续比较。不同类型的优先顺序的比较,就是混合类型的的比较。
先说连续比较,简单的讲就 a = 1 b = 2 c = 3
a < b < c 或 a < c > b 但实际情况a , b , c 肯什么都是函数,字符串,列表,元组而且中间还会有其他运算等等。
连续比较下优先级的顺序是 not > and > or 中间如果有基本运算的话先进行基本运算在进行比较运算 , 请看题:
1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
先进行的就是1>1 , 3 < 4 , 4 > 5 , 2 > 1, 9 > 8 ,7 < 6 成立为True 不成立为 False
所以上题就变成了False or True or False and True and Ture or False
根据 not > and > or的优先级顺序先运算and 在运算or,在and中有一个为False就是输出False跟前后没关系,别管一个两个的方便咱自己记,找到自己能解决问题方式的就是王道 False and True 为False 。
在or中,有一个为Ture 的就都是对的,False or True 为Ture。False or False 为False。所以最后的结果为 True.。看看第二题吧
not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
结果为False
第二点:and or的逻辑语句前后数值的运算关系,先运算and ,后运算 or 。以 x 和 y 为例
and 前后的数值关系,当 x 为非零时,取第二个值。 若 y 为 0 时 则输出 0 ,当 x 为 0 时,取 0 。
or 前后的数值关系,当 x 为非零时,直接取x,当x = 0 时,直接取 y
例 (1) 8 or 3 and 4 or 2 and 0 or 9 and 7
(2)0 or 2 and 3 and 4 or 6 and 0 or 3
答案 (1)8 (2)4
第三大点 混合类型的比较,bool < int < float < complex 。当两种不同类型的进行比较时,级别低的会转向级别高的进行比较 ,布尔值得True 得值为1 , False 的值为 0 。
例 6 or 2 > 1 , 根据优先顺序先算2 > 1 为真 True,所以原题变为 6 or True 就是 6 or 1取6
(1)3 or 2 > 1 答案:3
(2)0 or 5 < 4 答案:False
(3)5 < 4 or 3 答案:3
(4)2 > 1 or 6 答案:True
(5)3 and 2 > 1 答案:True
(6)0 and 3 > 1 答案:0
(7)2 > 1 and 3 答案:3
(8)2 > 1 and 3 答案:0
3 > 1 and 2 or 2 < 3 and 3 and 4 or 3 > 2
a=10
b=15
c=20
d=25
e=30
f=e//c
a-=b
f%=a
print(f>a and c//f or a*e)
最后一道题明天分享答案