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
为假,还是我遗漏了什么?