在写一个if语句中带有or判断的语句时为了简化,先写成了一下的样子
i = 3
if i == 1 or 5:
print(i)
结果:
3
由于or优先级最低,因此边成了 i==1和5两个条件的判断,结果不对于是改成下面的样子
i = 5
if i == (1 or 5):
print(i)
else:
print('not')
结果:
not
i = 1
if i == (1 or 5):
print(i)
else:
print('not')
结果:
1
不知道为啥这样,我看网上有人说可以这样写的
i = 5
if i == 1 or i== 5:
print(i)
else:
print('not')
结果:
5
希望与这个效果一样但是省略i== 不知道可以不
i == 1 or 5 是用 or 分隔的
i == 1
和
5
两个条件表达式。
其中5是一个单独的条件表达式,5在条件判断时永远为真, or 两边是任何一边为真结果就是真。
所以i == 1 or 5 表达式的结果就是永远为真。
if i == (1 or 5): 也是不对
or 和 and 是逻辑运算, 具有短路特性。
逻辑运算的工作原理是:
表达式A and 表达式B 的工作原理是:如果A的值为false(或A的值可以被当做为false)就返回A的值并且不执行表达式B,否则执行表达式B并且返回B的值
表达式A or 表达式B 的工作原理是:如果A的值为true(或A的值可以被当做为true)就返回A的值并且不执行表达式B,否则执行表达式B并且返回B的值
i == (1 or 5) 会先计算(1 or 5) , 1可以被当做为true就直接返回1, 5不会计算到
所以if i == (1 or 5): 等同于 if i == 1:
正确的写法是
if i == 1 or i == 5:
要简写可以这样子
if i in [1,5]:
就是判断i的值是否包含在[1,5]列表中
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
这个很简单,你单独的一个除了0以外的数字就是真,if 5:就相当于if true: 是一定会执行的,至于你那个把or括起来的,or有一个是真那就返回true,显然你1 or 5 1就是true了就不去看5了。
至于你最后说的简写,那个不行,但python与其他语言相比你能写这种东西 3 < x <5,而不用x>3and x<5。 你应该是个新手,加油吧。
1 or 5 得到的是1
当然不可以省略,python虽然接近自然语言,但也不完全是自然语言啊
其实最重要的是要以后好读,容易了解。
尤其是程序很多很长的时候,
越简单易读的,越好。
最好的例子是 :
希望的结果, 以及
楼上的 if i in [1,5]:
😄
简单概述一下,不可以
i ==3 和 3 是完全不同的两种描述
前者是一种判断,而后者恒为真,你可以粗略的将后者理解为 3==3
这样一来就清晰地发现了问题所在
而(1 or 5)则同样是判断,若是or 前面为真,则返回前面的值,若前假后真则返回后值,双假返回false
你若是嫌使用 == 当条件多时看着复杂也可以像楼上所说将 条件 写在列表中