You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 21:55:23