为什么在python中为我工作?

时间:2016-12-31 17:21:12

标签: 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

31325974

45689413

34512340

56756777

how many items do you want to buy?: 1
enter a GTIN code: 21356797
>>> 

这就是我想要的。然而,一旦我在我的while循环中输入OR,我就无法像第一部分一样工作:

while ig!=("21356797" or "13246785"):
            print("incorrect")
            ig=input("enter a GTIN code: ")
            count =count+1 

这是输出:

how many items do you want to buy?: 1
enter a GTIN code: 13246785
incorrect
enter a GTIN code: 21356797
>>> 

1 个答案:

答案 0 :(得分:2)

你的考试:

ig!=("21356797" or "13246785")

首先评估or条件,返回第一个“truthy”值。因此,它完全等同于:

ig!= "21356797"

因为"21356797"是真实的。

你想要一个遏制测试:

ig not in ("21356797", "13246785")

或两个连续的!=测试和编辑:

ig != "21356797" and ig != "13246785"
# Equivalent to:
not (ig == "21356797" or ig == "13246785")

包含测试可以更清晰地扩展到更大的值集,并且只要所有值都是字符串文字,就会同样有效(CPython缓存文字的常量tuple)。