使用else重做功能

时间:2018-07-20 17:19:22

标签: python python-3.x

因此,我创建了一个函数,并且在其中放入了if命令,以检查答案,但是当答案无效时,我想重复该函数,以便再次询问。它应该要求输入A或B,但是例如当我放C时,它应该调用该函数并重复。如何重新询问输入内容?这就是我尝试过的:

def function():
    data = input("A/B")
    if data == "A":
        print("A")
    elif data == "B":
        print("B")
    else:
        function()   #<-----problem here

4 个答案:

答案 0 :(得分:1)

您发布的示例代码以您描述的方式工作。对于涉及返回值的更复杂的函数,我建议以这种方式编写和调用它:

def function():
    data = input("A/B")
    if data == "A":
        return("A")
    elif data == "B":
        return("B")
    else:
        return(function())

print(function())

这意味着什么:

return(function())

是该函数将返回该函数下一次调用的结果。该下一个调用可能进而返回该函数的下一个调用的结果。这个概念是recursion的重要组成部分,可能值得将来使用。

答案 1 :(得分:0)

尝试while循环:

ans="C"
while ans!="B" and ans!="A":
    ans=input("A/B")   
print(ans) 

答案 2 :(得分:0)

这是递归函数。要建立一个只需要返回的电话:

Else:
    return function()

您可以将函数插入var:

var = function()

并命名为:

return var

答案 3 :(得分:0)

要解决此问题,您无需再次调用该函数,就好像用户输入错误答案的时间过多(我忘记了一些大数字),它将达到堆栈限制。要解决您的问题,您可以简单地使用while循环。下面的代码显示了如何完成此操作:

def function():
    while True: 
        data = input("A/B") 
        if data == "A": 
            print("A") 
            return
        elif data == "B": 
            print("B")
            return

从上面的代码中可以看到,我们正在使用一个无限的while循环,该循环将一直循环直到用户输入“ A”或“ B”。如果您不知道该关键字是否可以在函数之前存在,就可以使用return。

我还用手机回答了这个问题,所以如果对此有任何错误感到抱歉。