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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/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中的多个标志_Python - Fatal编程技术网

测试python中的多个标志

测试python中的多个标志,python,Python,为什么此代码没有打印通过?既然他们每个人都有1个,难道不应该通过打印吗?当我只输入其中一个变量时,它会打印通过。如果要检查每个变量中是否有1,则可以执行此操作 如果x中有1个,y中有1个,z中有1个: 打印('通过') 您的代码正在检查1是否等于x或y或z(事实并非如此,因为它们都是列表,1是一个数字)。您要做的是检查1是否在以下列表中: x = [1,2,3] y = [1] z = [0, 1, False] if 1 in (x, y, z): print('passed')

为什么此代码没有打印通过?既然他们每个人都有1个,难道不应该通过打印吗?当我只输入其中一个变量时,它会打印通过。

如果要检查每个变量中是否有1,则可以执行此操作

如果x中有1个,y中有1个,z中有1个:
打印('通过')

您的代码正在检查
1
是否等于
x
y
z
(事实并非如此,因为它们都是列表,
1
是一个数字)。您要做的是检查
1
是否在以下列表中:

x = [1,2,3]
y = [1]
z = [0, 1, False]

if 1 in (x, y, z):
    print('passed')
输出:

x = [1,2,3]
y = [1]
z = [0, 1, False]
if all(1 in l for l in (x, y, z)):
    print('passed')
在代码中

passed
检查1英寸([1,2,3],[1],[0,1,False]) 在类似的条件下([list1]、[list2]、[list3]) 所以它的检查,list1、list2或list3是否等于1

因此,完整条件如下所示:

if 1 in (x, y, z):
正如您所看到的,在if语句中,一切都是错误的

改用这个简单的syntex:

[1, 2, 3] = 1 # False

[1] = 1 # False

[0, 1, False] = 1 #False

你不是在检查他们每个人是否都有1个。您正在检查1是否等于x、y或z。这就是(x,y,z)中的
意思。@khelwood谢谢!但是当我这样做的时候,如果x中的1也打印通过了,为什么会这样呢?
x
包含三个整数,其中一个是1,所以
x中的1
是真的<代码>(x,y,z)
包含三个列表,而不是整数,因此(x,y,z)中的
1是假的。哦,我想我现在明白了。如果1英寸。将检查每个项目,因此在我放置
(x,y,z)
的情况下,它会检查每个列表,但对于y变量,即使它有1,它也会被视为
[1]
,而不是确切的
1
。。但是如果一次只列出一个变量,它会通过标志,因为它检查列表中的每个项目?非常感谢。
if (1 in x) or (1 in y) or (1 in z):
     print ("passed...")