用Python编写输入验证循环

2024-09-28 23:44:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试为游戏的艰难选择编写一个输入验证循环

while True:
diffChoice = input("Select a difficuilty...\n[e]asy, [m]edium, [h]ard: ").lower()

if diffChoice in ('e', 'm', 'h', 1, 2, 3):
    break
else:
    diffChoice = input("Incorrect input...\nSelect a difficuilty...\n[e]asy, [m]edium, [h]ard: ").lower()

问题是,当我输入一个错误的输入时,它会正确地打印错误。然而,当我输入正确的输入时,循环返回到开始,并再次请求输入

欢迎任何建议,或者如果您知道编写此验证循环的更好方法,请让我知道

提前感谢:)


Tags: intrue游戏inputif错误selectlower
2条回答
first_time_asking=True
while True:
    if (first_time_asking):
        diffChoice = input("Select a difficuilty...\n[e]asy, [m]edium, [h]ard: ").lower()
    else:
        diffChoice = input("Incorrect input...\nSelect a difficuilty...\n[e]asy, [m]edium, [h]ard: ").lower()

    if diffChoice in ('e', 'm', 'h', 1, 2, 3):
        break
    else:
        first_time_asking=False
        

试试这个

在您的代码中,如果输入正确,它将转到if条件和while循环中断。但如果您输入了不正确的一个,它将转到else条件,并再次请求输入。在您为else中的输入提供输入后,while循环将再次启动,并要求您输入while循环中的第一行

然而,在应答中给出的代码中,它只在while循环开始时询问输入。通过使用变量“first_time_asking”,您可以知道以前的输入是正确的还是错误的。取决于这一点,我们切换我们请求的输入语句

while True:
    diffChoice = input("Select a difficuilty...\n[e]asy, [m]edium, [h]ard: ").lower()

    if diffChoice in ('e', 'm', 'h', 1, 2, 3):
        break
    else:
        diffChoice = input("Incorrect input...\nSelect a difficuilty...\n[e]asy, [m]edium, [h]ard: ").lower()

while True导致循环永远运行,并且由于只在if条件中有break语句,因此很可能总是执行else部分。。 请注意,如果条件diffChoice in ('e', 'm', 'h', 1, 2, 3),则1,2,3是整数,但它们总是作为字符/字符串读取,因为您没有执行任何类型转换。。 您应该考虑将IF条件更改为使用整数值作为字符/字符串。

diffChoice in ('e', 'm', 'h', '1', '2', '3')

我注意到的另一件事是,您在else部分也请求输入,因此当您输入一次错误答案时,您转到else部分,它请求输入,由于else部分中没有任何条件,因此循环再次继续,它再次开始请求输入。。 因此,对于错误的答案,您需要输入两次。。 解决这些问题后,您的代码应该类似于:

while True:
    diffChoice = input("Select a difficuilty...\n[e]asy, [m]edium, [h]ard: ").lower()

    if diffChoice in ('e', 'm', 'h', '1', '2', '3'):
        break
    else:
        print("Incorrect input...\n")

相关问题 更多 >