Python 如何使If语句在多个和条件下失败

Python 如何使If语句在多个和条件下失败,python,python-2.7,Python,Python 2.7,我有下面的元组列表。我正在尝试测试一个负面场景,以使条件失败 >>> regop = [('1000', '63', 'Untaggged', '1000')] 我试图写一个条件: >>> if int(regop[0][0]) != 1000 and int(regop[0][1]) != 63 and regop[0][2] != 'Untaggged' and int(regop[0][3]) == 100: ... print "error" 在

我有下面的元组列表。我正在尝试测试一个负面场景,以使条件失败

>>> regop = [('1000', '63', 'Untaggged', '1000')]
我试图写一个条件:

>>> if int(regop[0][0]) != 1000 and int(regop[0][1]) != 63 and regop[0][2] != 'Untaggged' and int(regop[0][3]) == 100:
...  print "error"
在这种情况下,
int(regop[0][3])==100
False
,其余3个条件为
True
,但正如我所使用的
,如果条件失败并打印
错误
,这个
?它无法打印
错误

我不知道这里出了什么问题。谢谢你的帮助

如果您希望在任何条件评估为
True
时触发
if
,则需要
而不是

作为对当前解决方案的改进,我建议使用
any

vals = (1000, 63, 'Untaggged', 100)
if any(x != y for x, y in zip(regop[0], vals)):
    print('error')
any
返回
True
,即使在生成器内部单个条件的计算结果为
True
。相反,如果希望结果为
True
,则仅当理解中的每个条件都为
True
时,才将
any
替换为
all


使用
any
/
all
无需硬编码
x1!=y1或x2!=y2或…
多次,并生成简洁的代码

如果您希望在任何条件评估为
True
时触发
if
,则需要
而不是

作为对当前解决方案的改进,我建议使用
any

vals = (1000, 63, 'Untaggged', 100)
if any(x != y for x, y in zip(regop[0], vals)):
    print('error')
any
返回
True
,即使在生成器内部单个条件的计算结果为
True
。相反,如果希望结果为
True
,则仅当理解中的每个条件都为
True
时,才将
any
替换为
all


使用
any
/
all
无需硬编码
x1!=y1或x2!=y2或…
多次,并生成简洁的代码

True和False
的计算结果为
False
,因此不会触发该条件,因此不会执行
print“error”
。仅当所有值不匹配时,才会打印“error”。如果要在一个或多个<代码>时打印=
子句为true,然后使用
而不是
抓住要点,非常感谢@metatoaster所有条件的计算结果都不是吗?
int('1000')==1000
为true,因此
int('1000')!=1000
为false,或者我是否遗漏了什么?
True和false
的计算结果为
false
,因此不会触发该条件,因此不会执行
打印“error”
。仅当所有值不匹配时,它才会打印“error”。如果要在一个或多个<代码>时打印=
子句为true,然后使用
而不是
抓住要点,非常感谢@metatoaster所有条件的计算结果都不是吗?
int('1000')==1000
为true,因此
int('1000')!=1000
为假,还是我遗漏了什么?