Python 如果';x';和';y';在';z';:

Python 如果';x';和';y';在';z';:,python,if-statement,Python,If Statement,我正在用python制作一个问答脚本。它获取原始输入,并将其设置为问题。我尝试了如果问题中的'var1'和'var2',,但它会查找其中一个字符串,而不是两个。有没有一种方法可以在一个“如果”语句中实现这一点?(不是“如果x:如果y:那么z)。和是逻辑和,而不是自然语言。因此,您的代码将被解释为: 'var1' and 'var2' in theQuestion True and 'var2' in theQuestion # Since bool('var1') == True

我正在用python制作一个问答脚本。它获取原始输入,并将其设置为问题。我尝试了
如果问题中的'var1'和'var2',
,但它会查找其中一个字符串,而不是两个。有没有一种方法可以在一个“如果”语句中实现这一点?(不是“如果x:如果y:那么z)。

是逻辑和,而不是自然语言。因此,您的代码将被解释为:

'var1' and 'var2' in theQuestion
True   and 'var2' in theQuestion # Since bool('var1') == True
           'var2' in theQuestion
您希望使用逻辑AND连接两个测试:

if 'var1' in theQuestion and 'var2' in theQuestion:
或者,对于大量测试:

if all(k in theQuestion for k in ('var1', 'var2')):
那么:

if 'x' in z and 'y' in z:
  ... do something ...

或者,更一般地说,
if all(vars中的var问题中的var)
其中
vars
在本例中是
(var1,var2)
。@agf也添加了这一点,尽管它更像是一个用Python编写模糊代码的示例。如果您不知道有多少个变量,您会如何编写它?或者如果有十个变量?我认为它完全可读。“如果以下所有情况都是正确的:变量列表中每个变量的问题中都有变量”@agf如果测试数量是可变的,那么使用
all
肯定是正确的。对于两个值来说,这简直是矫枉过正,因为你不能像天真的版本那样轻松地阅读它。同意。这就是为什么我把它作为评论,而不是回答;你已经做对了:)可能是重复的