0

我正在尝试再次检查用户输入字符串中的多个单词:

prompt = input("What would you like to know?")
if ('temperature' and 'outside') in prompt:

我最初试图检查'outside'('temperature' or 'weather')但我遇到了同样的问题。true如果我只输入代码不会返回'temperature',但true如果我只输入它就会返回'outside'

我是否缺少一种格式来检查两个文本值而不仅仅是一个?

4

1 回答 1

0

您看到的意外行为的原因是and此处具有更高的优先级;那是因为in左边只能有一个表达式。

所以发生的事情是'temperature' and 'outside'被评估的。的语义and是,如果它的左侧操作数为真(并且所有非空字符串都是),则整个表达式的值将等于右侧操作数(在本例中为'outside'):

In [1]: 'weather' and 'outside'
Out[1]: 'outside'

所以你所做的相当于检查if 'outside' in prompt.


相反,您可以这样做:

if 'temperature' in prompt and 'outside' in prompt:
    ...

或更一般地说:

words = ['temperature', 'outside']
if all(word in prompt for word in words):
    ...

结合条件:

words = ['temperature', 'weather']
if 'outside' in prompt and any(word in prompt for word in words):
   ...
于 2013-05-24T11:18:38.103 回答