Python新手,我想創建一個函數,提示用戶輸入並檢查它是否是可接受的輸入(有一個可用的輸入列表)。如果可以接受 - 返回輸入。如果沒有 - 再次提示用戶,直到他提供可接受的輸入。將return放入使用raw_input並驗證輸入的函數的位置?
這是我用什麼:
def get_choice():
possible_choices = ["option1","option2","option3","option4"]
choice = raw_input("Please enter your choice: ").lower()
if choice not in possible_choices:
print "Sorry, please try again"
return get_choice() # if not an acceptable answer - run the function again
return choice
現在,這個工程。 我想知道的是if條件爲True時的返回命令。 直觀地說,我沒有將返回放在那裏,只是再次調用函數,如果用戶沒有輸入可接受的條目,它會再次運行它。但是,函數本身會返回用戶輸入的原始值,可接受與否。只有當我在再次調用函數之前添加了返回值,它纔開始正常工作。
任何人都可以解釋這是爲什麼嗎?當再次調用函數時,選擇現在將指向新的用戶輸入,而不是第一個。
我得到了主意,從Abrixas2的回答有加回到這個問題:
Python getting user input errors。
然而,在這裏:Continually prompting user for input in Python,audionautics的答案的一部分,涉及到類似的問題,他認爲這樣的功能:
def get_input_number():
num = int(raw_input("Enter a positive integer no greater than 42 "))
if num <= 0 or num > 42:
print "Invalid input. Try again "
get_input_number()
else:
return num
顯然,輸入需要由比我其他的標準進行驗證,但你會發現問題的本質是一樣的。在再次調用函數之前,他沒有返回語句。我試着一起運行這個代碼:
test = get_input_number()
print test
打印結果,它什麼都沒有返回。我提出這個問題的原因是它仍然有3個upvotes(對於這個問題大多數提議),所以當我研究這個問題時我不想一起解僱它。
無論如何,底線,有人可以請解釋什麼是正確的方式去了解它,爲什麼我的函數沒有在if條件中的return語句返回用戶輸入的第一個值?
感謝:D
使用循環,而不是遞歸... – isedev