簡體   English   中英

Python:返回值和返回無

[英]Python: Return Value and Return None

當我輸入“N”或“n”時,我不明白為什么函數會返回正確的字母。 當我輸入不正確的字母時,該函數被調用但返回“無”。 該函數應該保持循環直到輸入正確的字母。

這是我輸入正確字母時的輸出。

(N)ew game
Your choice?: n
Your choice before returning the value to main: n
Your choice: n

這是我輸入錯誤字母時的輸出。

(N)ew game
Your choice?: j
Wrong input
(N)ew game
Your choice?: n
Your choice before returning the value to main: n
Your choice: None

源代碼:

def auswahl():
    print("(N)ew game")

    choice = input("Your choice?: ")

    if choice == 'N' or choice == 'n':
        print("Your choice before returning the value to main:", choice)
        return choice
    else:
        print("Wrong input")
        auswahl()

#main
eingabe = auswahl()
print("Your choice:", eingabe)

使用auswahl()您只是遞歸地調用您的函數,但對它產生的值不做任何處理。

它必須是return auswahl()

但是,請注意,在接受用戶輸入的函數中使用遞歸被認為是有害的,因為如果用戶失敗太多次,您可能會破壞堆棧。 請參閱我鏈接到的答案的“常見陷阱”部分。

~編輯~

但是,如果我在那里返回,它會回到 main 嗎?! 遞歸是指函數調用自身?

是的,這里上下文中的遞歸是指調用自身的函數。 return auswahl()不會立即從函數返回,它必須等待對auwahl另一個調用產生的結果。 當然,在另一個調用中,用戶可能會再次失敗,這將觸發另一個調用,依此類推……

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM