Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 为什么在python中为我工作或不为我工作?_Python 3.x - Fatal编程技术网

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:如果您使用的是
,则需要将
条件放在一起,而不是
它们=。否则,将不会传递任何内容,因为它将始终不等于其中一个值