我有这个功能:
def abandoned_station():
print """
.....
"""
next = raw_input(prompt)
if next == "store room" or "Store Room" or "Store room":
store_room()
elif next == "control room" or "Control Room" or "Control room":
control_room()
elif next == "Look" or "look":
abandoned_station
else:
print "Sorry, I do not understand that command."
但是当我输入'控制室'在提示符下,它转到store_room函数。如果我输入任何其他内容,它会回到原来的aband_station函数 - 它甚至没有说它不明白。
我在这里创建了一个我错过的循环吗?
提前致谢。
答案 0 :(得分:0)
如果您进行这样的比较:
if next == "store room" or "Store Room" or "Store room":
它的真正含义是
if (next == "store room") or ("Store Room") or ("Store room"):
这意味着,Pythons动态自然会计算字符串的布尔值,除非它是空的,否则为True。你必须将每个子句与下一个比较:
if (next == "store room") or (next == "Store Room") or (next == "Store room"):
引用Python文档:
在布尔运算的上下文中,以及表达式时 在控制流语句中使用时,将解释以下值 as false:False,None,所有类型的数字零和空字符串 和容器(包括字符串,元组,列表,字典,集合 和frozensets)。所有其他值都被解释为true。 (见 非零()有关更改此方法的特殊方法。)
来源:Python doc