0 or 1,1 and 0

最近小编遇到很头疼的的一件事

就是以下这几道运算题 ,以下结果是小编经过大量的运算得出的

一.或运算

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.混合运算时,应当考虑运算符优先级的问题,当有括号时,先算括号内的运算

猜你喜欢

转载自www.cnblogs.com/mswyf/p/9286833.html