测试python中的多个标志
为什么此代码没有打印通过?既然他们每个人都有1个,难道不应该通过打印吗?当我只输入其中一个变量时,它会打印通过。如果要检查每个变量中是否有1,则可以执行此操作测试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')
如果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...")