如何在while循环中处理ValueError及输入不在选项列表的情况?
解决Region函数的输入校验问题
原函数只能校验数字是否在指定范围内,但输入非数字内容时会触发ValueError崩溃。要同时处理输入非有效数字和数字不在1-5范围内这两种非法情况,你可以把输入逻辑整合到循环里,结合try-except捕获类型转换错误,再加上范围校验。修改后的代码如下:
def region(): print("What is the Region?") print("1: Central") print("2: North") print("3: North-East") print("4: East") print("5: West") while True: try: region_num = int(input("Region: ")) if region_num in [1,2,3,4,5]: # 若需要返回选中的区域编号,可取消下面的注释 # return region_num break else: print("Invalid Response. Please choose a number between 1 and 5.") except ValueError: print("Invalid Response. Please enter a valid number.")
逻辑说明:
- 用
while True构建无限循环,直到获取到有效输入才退出 try块尝试将用户输入转为整数:如果输入是字母、符号等非数字内容,会触发ValueError,进入except分支提示用户输入有效数字- 转换成功后,立即检查数字是否在1-5的范围内,不在则提示用户选择正确范围的数字
- 只有当输入是1-5的有效数字时,才跳出循环,后续可根据需求返回该值或继续执行其他逻辑
内容的提问来源于stack exchange,提问作者N_ote
相关产品推荐
相关产品推荐

