从递归函数中断并返回最近的值?

时间:2015-07-20 03:59:47

标签: python recursion

我想确认输入是一个单独的字母。有没有办法返回第一个有效值,然后在输出先前的无效条目之前结束递归。

例如,如果第一个条目是' 4'第二个条目是' $',第三个条目是' a',我想只返回' a'而不是' 4'和' $'。

def check_guess(guess):
    guess = str(guess)
    if guess.isalpha() == True and len(guess) == 1:
        return guess    
    else:
        guess = raw_input("No special or multiple characters allowed. Reenter guess: ").lower()
        check_guess(guess)  #recursion

(这是一个简单的游戏,但希望更好地理解递归,而不是另一种编码方式)

1 个答案:

答案 0 :(得分:0)

递归是处理用户输入的一种诱人但很差的方法。改为使用循环:

def get_guess():
    while 1:
        guess = raw_input("Guess? ")
        if guess.isalpha() and len(guess) == 1:
            return guess
        print "Guess must be a single letter."