首页 > 解决方案 > 如何检测无效输入并将用户置于循环中,直到输入可接受的答案?

问题描述

我试图弄清楚如何让用户输入字母并将数字仅作为无效输入返回。

这是我的代码,我仍然不清楚 ValueError ,就好像我运行代码并输入字母一样,它会作为无效输入出现,但如果我输入数字,它会作为有效输入出现。

while True:
    try:

        name = int(input("What is your name? "))
    except ValueError:
        print("Invalid response. Letters only please.")
        continue
    else:

        break

    correctName = input("Your name is...'" + (name) + "', is this correct? \n Please use 'Y' as yes and 'N' as no.\n")
    if correctName == "Y":
        print("Thank you..!")

标签: python

解决方案


int(input())会期望一个整数作为输入,所以当你输入你的名字时(除非你的名字完全由数字组成),你会得到ValueError你现在正在经历的。相反,您可以使用str(input())获取用户输入,然后使用该str.isdigit()方法检查它是否为数字。

name = str(input("What is your name? "))
if name.isdigit():
    print("Invalid response. Letters only please.")
    continue
else:
    break

推荐阅读