在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。

回答

  1. 该代码为您提供结果,2因为条件you>=8 or date>=8优先于其他条件。
  2. 代码一次通过一个条件。并执行第一个condition返回Truthy值的代码。

看看这个文章约Truthy and Falsy值。


以上是在python中使用'or'总是评估为真,它可能与其他条件发生冲突的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>