最近小编遇到很头疼的的一件事
就是以下这几道运算题 ,以下结果是小编经过大量的运算得出的
一.或运算
1.0 or 1
结果为:1
2.1 or 0
结果为:1
3.1 or 2
结果为:1
4.2 or 1
结果为:2
5.0 or []
结果为:[]
6.[] or 0
结果为:0
二.与运算
1.0 and 1
结果为:0
2.1 and 0
结果为:0
3.1 and 2
结果为:2
4.2 and 1
结果为:1
5.' ' and 0
结果为:' '
6.0 and ' '
结果为:0
三.混合运算
1.1 < ( 2 == 2)
结果为:False 这道题就不用多说了,2==2为True,True换成数字为1,1<1明显为Flase
2.1 < 2 == 2
结果为:True
按照正常思路,比较运算优先级比等于优先级高,所以这道题先算1 < 2 为True,True为1,1不等于2,所以为Flase
但是,答案明明就是True,实际上这道题是这样算的:
1 < 2 and 2 == 2 这样一转变,是不是立马就明白了
因为逻辑运算优先级低,所以最后运算为:True and True
总结:
1.or:或运算的两边,有真则真;若都为真,则选前者;若都为假,则选后者;
2.and:与运算的两边,有假则假;若都为真,则选后者;若都为假,则选前者;
3.混合运算时,应当考虑运算符优先级的问题,当有括号时,先算括号内的运算