Python 3.x 为什么在python中为我工作或不为我工作?
这是我的代码:Python 3.x 为什么在python中为我工作或不为我工作?,python-3.x,Python 3.x,这是我的代码: for count in range(NOI): ig=input("enter a GTIN code: ") while ig!=("21356797"): print("incorrect") ig=input("enter a GTIN code: ") count =count+1 这是输出: 21356797 13246785 3132
for count in range(NOI):
ig=input("enter a GTIN code: ")
while ig!=("21356797"):
print("incorrect")
ig=input("enter a GTIN code: ")
count =count+1
这是输出:
21356797
13246785
31325974
45689413
34512340
56756777
how many items do you want to buy?: 1
enter a GTIN code: 21356797
>>>
how many items do you want to buy?: 1
enter a GTIN code: 13246785
incorrect
enter a GTIN code: 21356797
>>>
这就是我想要的。但是,一旦我加入while循环,我就无法像第一部分那样工作:
while ig!=("21356797" or "13246785"):
print("incorrect")
ig=input("enter a GTIN code: ")
count =count+1
这是输出:
21356797
13246785
31325974
45689413
34512340
56756777
how many items do you want to buy?: 1
enter a GTIN code: 21356797
>>>
how many items do you want to buy?: 1
enter a GTIN code: 13246785
incorrect
enter a GTIN code: 21356797
>>>
您的测试:
ig!=("21356797" or "13246785")
首先计算或
条件,返回第一个“truthy”值。因此,它完全等同于:
ig!= "21356797"
因为“21356797”
是真实的
您需要一个安全壳测试:
ig not in ("21356797", "13246785")
或者两个连续的=代码>测试和测试在一起:
ig != "21356797" and ig != "13246785"
# Equivalent to:
not (ig == "21356797" or ig == "13246785")
包容测试可以更干净地扩展到一组更大的值,只要所有值都是字符串文字,它的效率将是相同的(CPython缓存常量元组。可能而ig=(“21356797”或“13246785”):
=>而不是在[“21356797”,“13246785]”中的ig:
在两个字符串之间使用或实际上没有意义,因为字符串不是布尔值(尽管它们可以强制为布尔值,这不是您真正想要的)。“21356797”或“13246785”
是“21356797”,在python中查找or运算符。你必须做ig!=。。。或ig!=
@Jasper:如果您使用的是,则需要将和
条件放在一起,而不是或
它们=代码>。否则,将不会传递任何内容,因为它将始终不等于其中一个值