我正在尝试从多个条件触发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
答案 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中的大多数内容都评估为True
(False
,None
除外,或空字符串,列表,字符串......)。 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
。
它与自然语言