2014-06-23 37 views
1

我有這樣的功能:調用next功能:Python的

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功能。如果我輸入了其他內容,它會回到原來的abandoned_station功能 - 它甚至不會說它不理解。

我在這裏創建了一個我錯過的循環嗎?

在此先感謝。

+0

不使用'next'作爲變量名,'next'是'builtin_function '在Python中。 –

+0

然後,我應該使用什麼作爲我的變量名稱? – JoelSolo

+0

任何不影響python內建或類型的東西可能就像'user_input'。你可以使用'if user_input.lower()==「store room」'而不是使用所有'或'語句。 –

回答

0

如果你做你比較喜歡的是:

if next == "store room" or "Store Room" or "Store room": 

它真正的意思是

if (next == "store room") or ("Store Room") or ("Store room"): 

這意味着,蟒蛇動態性評估字符串,這是事實的布爾除非是空。你必須每個條款都與下一個比較:

if (next == "store room") or (next == "Store Room") or (next == "Store room"): 

引述Python文檔:

在布爾運算的情況下,以及當表達式是通過控制流語句,下面的值用於 將 解釋爲false:假,無,所有類型的數字零,以及空字符串 和容器(包括字符串,元組,列表,詞典,集合 和frozensets)。所有其他值都被解釋爲true。 (換一種方式來改變這種見 非零()特殊方法。)

來源:Python doc

+1

另外,OP需要爲'look'命令實際*調用*'abandoned_station'。 – kindall