Python布尔帮助!

2024-05-08 21:41:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样的代码:

if (X or Y) == ("Cat" or "Dog" or "Fish" or "Bird"):
    print X, Y

它只有在X == "Cat"时才有效。有人知道我的错误吗?在


Tags: or代码if错误catprintdogfish
3条回答

Python中的or运算符如果是"trucy",则返回第一个参数,否则返回第二个参数。只要X为“trucy”,则比较的右侧始终求值为"Cat",而左侧的求值结果为X。在

最简洁的方法来获得你想要的逻辑是

if set((X, Y)) & set(("Cat", "Dog", "Fish", "Bird")):
    # whatever

结果是你在计算X or Y,只给你X。然后,计算出Cat or Dog or..,只给你Cat,因为它不是0。在

你想要的是:

if X in ("Cat","Dog", "Fish", "Bird") or Y in ("Cat","Dog", "Fish", "Bird"):
    #taa daa!

我想你这样想:

animals = ["Cat", "Dog", "Fish", "Bird"]
if X in animals or Y in animals:
    print X, Y

在您的代码中,表达式(“Cat”或“Dog”或“Fish”或“Bird”)被视为逻辑表达式,我确信您不希望这样做。碰巧这个表达式的计算结果是“猫”,这解释了你观察到的行为。在


^{pr2}$

这些是字符串上的逻辑操作。非空字符串被视为真值。空字符串被认为是错误的。Python的逻辑运算符返回与操作数类型相同的值(假设两个操作数的类型相同)。短路评估解释了or和{}的行为。在

在任何情况下,对字符串执行逻辑操作是没有意义的!在

相关问题 更多 >