if/elif语句的多个条件

Bla*_*ine 11 python if-statement python-2.7

我试图从多个条件触发if语句,而不用不同的触发器多次重写语句.例如:

if user_input == "look":  
    print description


if user_input == "look around":
    print description
Run Code Online (Sandbox Code Playgroud)

你会如何将它们浓缩成一个陈述?

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

if user_input == "look" or "look around":  
    print description
Run Code Online (Sandbox Code Playgroud)

Dou*_*gal 12

你要做的是

if user_input == "look" or user_input == "look around":
    print description
Run Code Online (Sandbox Code Playgroud)

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

if user_input in ("look", "look around"):
    print description
Run Code Online (Sandbox Code Playgroud)

由于你使用的是2.7,你也可以这样写(它适用于2.7或3+,但不适用于2.6或以下):

if user_input in {"look", "look around"}:
    print description
Run Code Online (Sandbox Code Playgroud)

它会产生set你的元素,搜索速度会稍微快一些(尽管只有当你检查的元素数量远大于2时才有意义).


你第一次尝试的原因是这个.Python中的大多数事物计算为True(除False,None或空字符串,列表类型的字典,...).or接受两件事并将其评估为布尔值.所以user_input == "look" or "look around"被对待(user_input == "look") or "look_around"; 如果第一个是假的,那就像你写的那样if "look_around":,总是会经历.