当我输入“ N”或“ n”时,我不知道为什么函数返回正确的字母。该函数被调用,但是当我输入错误的字母时返回“ None”。 该功能应该一直循环直到输入正确的字母。
这是我输入正确字母时的输出。
(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)
答案 0 :(得分:2)
使用auswahl()
只是递归地调用函数,而对其产生的值不执行任何操作。
必须为return auswahl()
。
但是,请注意在需要用户输入is considered harmful的函数中使用递归,因为如果用户失败太多次,您可能会破坏堆栈。请参阅我链接的答案的“常见陷阱”部分。
〜编辑〜
但是,如果我在那儿放回货,它会回到主要的?!对于递归,您是指该函数调用自身?
是的,在这种情况下,递归是指调用自身的函数。 return auswahl()
不会立即从函数返回,它必须等待对auwahl
的另一个调用产生的结果。当然,在其他呼叫中,用户可能会再次失败,这将触发另一个呼叫,依此类推...