一尘不染

带有if / elif语句的多个条件

python

我试图获得一个if语句从多个条件中触发,而不用不同的触发器多次重写该语句。例如:

if user_input == "look":  
    print description


if user_input == "look around":
    print description

您如何将这些内容浓缩成一个陈述?

我试过使用“或”,并且无论输入是否符合任何条件,它都会导致任何raw_input触发语句。

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

阅读 168

收藏
2020-12-20

共1个答案

一尘不染

你想做的是

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中的大多数事物计算为True(除FalseNone或空字符串,列表类型的字典,…)。or需要两件事,并将它们评估为布尔值。因此user_input == "look" or "look around"被视为(user_input == "look") or "look_around";
如果第一个错误,则就像您写的一样if "look_around":,它将始终通过。

2020-12-20