我正在尝试再次检查用户输入字符串中的多个单词:
prompt = input("What would you like to know?")
if ('temperature' and 'outside') in prompt:
我最初试图检查'outside'
和('temperature' or 'weather')
但我在两个方面遇到了同样的问题。如果我仅输入true
,则代码不会返回'temperature'
,但如果我只输入true
,则会返回'outside'
。
我是否缺少一个格式化来检查两个文本值而不仅仅是一个?
答案 0 :(得分:0)
您看到的意外行为的原因是and
在此处具有更高的优先级;那是因为in
只能在左侧有一个表达式。
所以会发生什么,'temperature' and 'outside'
被评估。 and
的语义是这样的,如果它的左侧操作数是真的(并且所有非空字符串都是),则整个表达式的值将等于右操作数(在这种情况下,{{1} }):
'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):
...