我正在进行这种控制评估。我只是一个初学者,所以我对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进行编程的初学者,所以请不要让解决方案过于复杂。
答案 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中的全局变量。