我试图获得一个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
你想做的是
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的情况下才重要)。
set
您的第一次尝试总是要经过的原因是这样的。Python中的大多数事物计算为True(除False,None或空字符串,列表类型的字典,…)。or需要两件事,并将它们评估为布尔值。因此user_input == "look" or "look around"被视为(user_input == "look") or "look_around"; 如果第一个错误,则就像您写的一样if "look_around":,它将始终通过。
True
False
None
or
user_input == "look" or "look around"
(user_input == "look") or "look_around"
if "look_around":