在python中使用'or'总是评估为真,它可能与其他条件发生冲突
我正在用 Python 编写一个简单的布尔表达式,它应该遵循这组规则:
- 参数“you”是你衣服的时髦度,在0..10范围内,“date”是你约会对象在同一范围内衣服的时髦度。
- 获取表的结果被编码为
int带有0=no,1=maybe,的值
2=yes。 - 如果你们中的任何一个都很时尚,8 或更多,那么结果是
2 (yes)。除了如果你们中的任何一个人的风格为2或更少,那么结果是0 (no)。否则结果是1 (maybe)。
除了特定条件外,我的代码工作正常。如果您的样式为 8 而您的约会对象的样式为 2 或更少怎么办?应该运行哪个结果,为什么?这是我的代码
def date_fashion(you, date):
if you>=8 or date>=8:
return 2
elif you<=2 or date<=2:
return 0
else:
return 1
如果我运行 date_fashion(10, 2) 它应该给出 0,但它也可以给出 2。
哪一个是正确答案?这里两个条件同时发生冲突哪一个是正确的?结果 0 或结果 2,为什么?我的代码给出 2 但它也可以给出 0。
回答
- 该代码为您提供结果,
2因为条件you>=8 or date>=8优先于其他条件。 - 代码一次通过一个条件。并执行第一个
condition返回Truthy值的代码。
看看这个文章约
Truthy and Falsy值。