if / elif语句的多个条件

时间:2012-09-08 23:44:17

标签: python python-2.7 if-statement

我正在尝试从多个条件触发if语句,而不使用不同的触发器多次重写语句。 e.g:

if user_input == "look":  
    print description


if user_input == "look around":
    print description

您如何将这些内容浓缩为一个声明?

我尝试使用'或',无论输入是否匹配任何条件,它都会导致任何raw_input触发语句。

if user_input == "look" or "look around":  
    print description

2 个答案:

答案 0 :(得分:12)

你要做的是

if user_input == "look" or user_input == "look around":
    print description

如果你有很多可能性,另一个选择是:

if user_input in ("look", "look around"):
    print description

由于你使用的是2.7,你也可以像这样编写它(在2.7或3+中工作,但不在2.6或以下):

if user_input in {"look", "look around"}:
    print description

会生成set个元素,搜索速度会稍微快一点(尽管只有在你检查的元素数量远大于2时才有意义。)


你第一次尝试的原因是这个。 Python中的大多数内容都评估为TrueFalseNone除外,或空字符串,列表,字符串......)。 or接受两件事并将其评估为布尔值。因此user_input == "look" or "look around"被视为(user_input == "look") or "look_around";如果第一个是假的,就像你写的if "look_around":一样,总是会经历。

答案 1 :(得分:2)

如果字符串遵循模式,则可以使用正则表达式来匹配字符串 可选部分或您可以执行数组查找:

if user_input in ["look", "look around"]:
    print description

布尔运算符or仅适用于布尔值,它会计算表达式 如果其中一个表达式的计算结果为True,则双方都返回True。 它与自然语言

无关