MioMelliot Asked:2020-06-25 14:45:29 +0000 UTC2020-06-25 14:45:29 +0000 UTC 2020-06-25 14:45:29 +0000 UTC 比较一个变量和多个值使用or不能正常工作 772 大家好,使用 Python 编程,我在使用 str 时遇到了 if 语句及其在 or 函数下的问题,它看起来像这样 if a=="ноль" or "нулевой": print(0) elif a=="один" or "единичный": print(1) # выводит лишь 0 при любых значениях a 我应该怎么做以及如何解决? python if 3 个回答 Voted Best Answer Эникейщик 2020-06-25T15:15:37Z2020-06-25T15:15:37Z 许多新手程序员认为,如果你写 if a=="ноль" or "нулевой": 然后它将а依次与两个部分进行比较 - with"ноль"和 with "нулевой"。 if a=="ноль" или if a == "нулевой": 实际上,只会有一个比较:a == "ноль". 第二部分 ( "нулевой") 简单地计算为一个布尔结果,在这种情况下它总是 True (就像任何其他字符串一样)。print (0)如果为 True,则无论 的值如何,执行总是转到下一行а。 换句话说,if a=="ноль" or "нулевой"string 等价于 string if "нулевой"。而且因为 这样一个表达式的结果总是 True,那么这行也不需要。基于上述,您的所有四行都相当于一个: print(0) 这正是发生在你身上的事情。 gil9red 2020-06-25T14:57:09Z2020-06-25T14:57:09Z 通过运算符选项in: if a in ("ноль", "нулевой"): print(0) elif a in ("один", "единичный"): print(1) 字典选项: name_by_value = { "ноль": 0, "нулевой": 0, "один": 1, "единичный": 1, } print(name_by_value[a]) pinguin 2020-06-25T14:49:25Z2020-06-25T14:49:25Z if a=="ноль" or a=="нулевой": print(0) elif a=="один" or a=="единичный": print(1)
许多新手程序员认为,如果你写
然后它将
а依次与两个部分进行比较 - with"ноль"和 with"нулевой"。实际上,只会有一个比较:
a == "ноль". 第二部分 ("нулевой") 简单地计算为一个布尔结果,在这种情况下它总是 True (就像任何其他字符串一样)。print (0)如果为 True,则无论 的值如何,执行总是转到下一行а。换句话说,
if a=="ноль" or "нулевой"string 等价于 stringif "нулевой"。而且因为 这样一个表达式的结果总是 True,那么这行也不需要。基于上述,您的所有四行都相当于一个:这正是发生在你身上的事情。
通过运算符选项
in:字典选项: