我正在使用Python编写一个问答脚本。它获取raw_input并将其设置为theQuestion。我尝试了if 'var1' and 'var2' in theQuestion:
,但它只查找其中一个字符串,而不是两个都存在的情况。有没有办法在一个“if”语句中使其工作?(不是“if x: if y: 那么 z”)。
我正在使用Python编写一个问答脚本。它获取raw_input并将其设置为theQuestion。我尝试了if 'var1' and 'var2' in theQuestion:
,但它只查找其中一个字符串,而不是两个都存在的情况。有没有办法在一个“if”语句中使其工作?(不是“if x: if y: 那么 z”)。
and
是一个逻辑与运算符,而不是自然语言中的“和”的意思。因此,你的代码被解释为:
'var1' and 'var2' in theQuestion
True and 'var2' in theQuestion # Since bool('var1') == True
'var2' in theQuestion
你想用逻辑与连接这两个测试:
你想用逻辑与连接这两个测试:
if 'var1' in theQuestion and 'var2' in theQuestion:
或者,对于大量的测试:
if all(k in theQuestion for k in ('var1', 'var2')):
theQuestion
中对于变量集合vars
中的每个变量var
都成立,那么就满足条件all(var in theQuestion for var in vars)
。在这种情况下,vars
是(var1, var2)
。 - agfall
是一个不错的解决方案,当我们有一个大列表需要测试时。 - igorkfif 'x' in z and 'y' in z:
... do something ...