对字符串的多个布尔值

时间:2013-05-24 11:15:11

标签: python formatting boolean

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

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

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

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

1 个答案:

答案 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):
    ...