调用下一个函数:Python

时间:2014-06-23 19:25:12

标签: python function

我有这个功能:

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函数 - 它甚至没有说它不明白。

我在这里创建了一个我错过的循环吗?

提前致谢。

1 个答案:

答案 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