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

如何修改Python While循环以实现仅接受整数输入、拒绝字符串

问题原因

你当前的代码直接对input()的返回结果调用int()做类型转换,当用户输入非整数字符串时,int()会直接抛出ValueError异常,没有做异常捕获逻辑,所以程序会直接崩溃。

修正方案

可以通过try-except语句捕获类型转换的异常,同时将输入、转换、合法性校验逻辑整合到统一的死循环中,只有输入符合要求才退出循环返回结果,修改后的代码如下:

def addItem(menu, order):
    while True:
        # 先获取原始输入内容不直接做int转换
        input_content = input('your choice : ')
        # 捕获类型转换异常
        try:
            itemNo = int(input_content)
        except ValueError:
            print('Invalid input, please enter an integer.')
            continue
        # 校验退出标识
        if itemNo == -1:
            return itemNo
        # 校验编号是否在合法可选范围内
        if 1 <= itemNo <= len(menu):
            return itemNo
        # 编号超出合法范围的提示
        print(f'Invalid input, please enter a number between 1 and {len(menu)}, or enter -1 to exit.')

调整说明

  • 新增try-except逻辑捕获ValueError,输入非整数时不会抛出异常,会引导用户重新输入
  • 所有输入相关逻辑整合到同一个while True循环中,消除了原代码重复写输入转换逻辑的冗余问题
  • 合法性判断逻辑分层清晰,类型错误、数值范围错误都有对应的提示,用户操作指引更明确

内容的提问来源于stack exchange,提问作者Fidel Hamoud

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:15:06