2015-04-22 114 views
0

我想在Python 2中做一個簡單的控制,以確保用戶的輸入小於給定的常量。如果不是這種情況,它應該再次詢問另一個整數,直到它變小。Python遞歸返回舊值

limit_store = 12 

def input_store(): 
    sel_store = int(raw_input("Which store do you want? ")) 
    if sel_store > limit_store: 
     print "Store number %i is not valid" % sel_store 
     input_store() 
    return sel_store 

store = input_store() 

這是我第一次在Ipython筆記本中寫的。現在,如果第一個輸入爲9,則按預期返回9。如果輸入是999,它大於12,則運行if語句,我們可以選擇另一個整數。在錯誤的輸入之後選擇正確的輸入將返回舊的錯誤輸入而不是新的輸入。

+0

您將需要'返回input_store()',sel_store'的'值將被存儲在第一次調用函數,所以如果你進入100個不同的數字,你將永遠得到第一個,除非你返回 –

回答

2

您需要在打印「無效」消息後保存該值。

if sel_store > limit_store: 
    print "Store number %i is not valid" % sel_store 
    sel_store = input_store() # save value here 

return荷蘭國際集團將其保存也將工作的數量,而不是 - 只要數量變爲有用的地方,而不是被扔掉。 Python doesn't have TCO,所以性能優勢很小。不同之處在於您更喜歡:您的函數只有一個return聲明,或者它立即代替首先保存變量。

這將是一個循環反正簡單:

def input_store(): 
    while True: 
     sel_store = int(raw_input("Which store do you want? ")) 
     if sel_store <= limit_store: break 
     print "Store number %i is not valid" % sel_store 
    return sel_store 
+2

或只是''''''''''input_store()''' – bj0

+0

對不起。我忘了在帖子中加入那篇文章。我正在編輯。 – BAZA

+0

否 - 在功能中打印「無效」消息後立即打印。 – TigerhawkT3