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

Python输入验证问题:选项输入无效值时如何避免输出多余计算结果

问题解决方案

原有代码的核心问题

  • 选项2的合法性校验逻辑位置错误:你把体重是否≥100的校验放在了for循环内部,且执行顺序是「先扣减体重→先打印结果→再做校验」,自然会先输出无效结果再打印错误提示
  • 缺少全局输入校验逻辑:选项选择、选项2的体重输入都没有做前置拦截,无效输入会直接进入后续业务逻辑
  • 代码存在笔误:退出逻辑的判断条件写为option3 == 3,变量名错误,应为options == 3
  • 缺少外层循环包裹整个程序逻辑,重试逻辑无法正常生效

最优解决思路

所有输入都做前置校验,合法才进入后续业务逻辑,不合法直接提示重试,不执行任何计算、打印操作:

  1. 外层加while True循环包裹整个程序,仅用户选择选项3时才退出
  2. 选项选择输入做校验,不在1/2/3范围内的直接提示错误,重新输入
  3. 选项2的体重输入获取后立刻做校验,小于100直接提示错误,返回主菜单,不进入后续表格打印逻辑
  4. 修正变量笔误,同时新增非数字输入的异常捕获,避免用户输入非数字内容时程序直接崩溃

修正后完整代码

while True:
    # 主菜单选项选择
    print('\n请选择以下选项:')
    # 捕获输入非数字的异常
    try:
        options = int(input(' 1. 查看“减少500卡路里的10种方法”指南 \n 2. 生成下学期体重预测表 \n 3. 退出程序 \n请输入选项:'))
    except ValueError:
        print("错误:请输入有效的数字选项")
        continue

    # 选项1逻辑
    if options == 1:
        print('试试这10种每天减少500卡路里的方法:')
        print('* 更换你的零食')
        print('* 去掉一份高热量食物')
        print('* 不要喝高热量饮品')
        print('* 选择低热量替代食物')
        print('* 就餐时提前打包一半食物')
        print('* 拒绝油炸食品')
        print('* 选择更健康的低热量披萨')
        print('* 使用更小的餐盘')
        print('* 避免饮酒')
        print('* 来源:美国国家医学图书馆')
        
    # 选项2逻辑
    elif options == 2:
        # 捕获体重输入非数字的异常
        try:
            weight = int(input("请输入初始体重(单位:磅,数值≥100):"))
        except ValueError:
            print("错误:请输入有效的数字体重")
            continue
        # 前置校验体重合法性
        if weight < 100:
            print('错误:体重不能小于100磅,请重试')
            continue
        # 校验通过才打印表格
        print('----------------------------------')
        print('月份   预测体重')
        print('----------------------------------')
        for i in range(0,7):
            weight = weight -4   
            print(i,'   ',weight,' 磅')

    # 选项3逻辑
    elif options == 3:
        print('\n再见...')
        break
    # 选项不在1/2/3范围内的情况
    else:
        print("错误:请输入1/2/3范围内的有效选项")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:45:03