Python中如何实现输入名称的循环校验直至输入合法?
问题原因与解决方法
问题出在哪?
你的代码只做了单次校验:第一次输入错误时仅重新提示一次,但如果第二次输入还是不合法,程序就没有后续判断逻辑了,自然无法实现「持续提示直到输入合法」的需求。
解决方法:用while循环实现持续校验
把输入、校验逻辑放到while循环里,只要输入的名字不在合法列表中,就一直重复提示用户重新输入,直到输入合法才退出循环,然后输出名字的含义。
修改后的代码:
names_meaning = { "Taiwo": "First of a twin", "Tariro": "Hope", "Joseph": "God will add", "Joel": "YHWH (or LORD) is God", "Jude": "Praised", "Hannah": "Favour or Grace" } family_names = list(names_meaning.keys()) # 持续提示直到输入合法 while True: name = input("Please type a name to know the meaning: ").capitalize() if name in family_names: # 输入合法,跳出循环 break # 输入非法,提示并继续循环 print(f"You can only pick a name from this list of names {family_names}.") # 输出名字含义 print(f"{name} means: {names_meaning[name]}\n")
代码说明
while True创建一个无限循环,直到遇到break才会退出- 每次循环都会重新获取用户输入并处理首字母大写
- 若输入合法,执行
break跳出循环,然后执行后续的含义输出 - 若输入非法,打印提示信息,循环继续,再次要求用户输入
内容的提问来源于stack exchange,提问作者Tai Babs
相关产品推荐
相关产品推荐

