如果第一次值正确,如何修复一次运行的循环。但是,如果第一个值错误且第二个值正确,则会运行。

时间:2016-09-16 08:50:56

标签: python python-3.x

我正在进行这种控制评估。我只是一个初学者,所以我对python不太了解。

我有这段代码:

# defining qualification
def qualification():
    print("\nQualification Level") # informs user what is AP + FQ
    print('\n"AP" = Apprentice', '\n"FQ" = Fully-Qulaified')

    user_qual = input("Enter your Qualification Level")

    # error message if any other data is entered
    while user_qual not in ("AP", "FQ"):
        print("You have entered one or more data wrong!")
        print("Please re-enter Qualification Level!")
        qualification()

每次运行此代码时,它都会运行良好,直到while循环。如果我第一次运行代码时输入正确的值(即AP或FQ),则while循环不会运行,因为它应该。但是如果我第一次输入错误的值(任何不是FQ或AP的值),while循环就会运行,但是在第一次运行之后,如果我在输入错误的值之后输入正确的值,则为eve循环不会停止循环。正在创建一个无限循环。

请提供答案,请记住我只是使用python进行编程的初学者,所以请不要让解决方案过于复杂。

1 个答案:

答案 0 :(得分:0)

你试图在错误的地方使用递归。

如果用户输入第一次出错,您将进入更深层次的递归,该递归将(可能)输入正确的输入(或将更深入)。

但是,它会结束并返回上一级递归,其中user_qual变量仍然相同,这将导致无限循环。

注意:变量在运行到不同的递归级别时不一样。您正在进入另一个本地范围。您可能希望在继续执行程序之前对范围进行一些搜索。

所以,不要在最后一行调用qualification(),而是再次输入:

while user_qual not in ("AP", "FQ"):
    print("You have entered one or more  data wrong!")
    user_qual = input("Please re-enter Qualification Level!")

另一个解决方案是在函数的开头和循环的开头使用global user_qual。如果您打算这样做,请阅读python中的全局变量。