Python:返回值,不返回

时间:2018-10-30 14:53:55

标签: python

当我输入“ 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)

1 个答案:

答案 0 :(得分:2)

使用auswahl()只是递归地调用函数,而对其产生的值不执行任何操作。

必须为return auswahl()

但是,请注意在需要用户输入is considered harmful的函数中使用递归,因为如果用户失败太多次,您可能会破坏堆栈。请参阅我链接的答案的“常见陷阱”部分。

〜编辑〜

  

但是,如果我在那儿放回货,它会回到主要的?!对于递归,您是指该函数调用自身?

是的,在这种情况下,递归是指调用自身的函数。 return auswahl()不会立即从函数返回,它必须等待对auwahl的另一个调用产生的结果。当然,在其他呼叫中,用户可能会再次失败,这将触发另一个呼叫,依此类推...