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

如何用Python的try-except编写读取数字至输入'done'停止并计算结果的程序?

修正循环读取数字并计算结果的Python程序

原代码存在的问题

  • 抛出ValueError时,userIn未被成功赋值,此时访问该变量会触发NameError
  • 使用eval(myList)计算平均值完全错误,eval无法直接处理列表对象,应该用sum()和len()来计算总和与平均值
  • 输入'done'的逻辑处理混乱,未正确区分'done'指令与其他无效输入

修正后的代码

my_list = []

while True:
    user_input = input('Enter any number >>  ')
    try:
        # 尝试将输入转为整数并加入列表
        num = int(user_input)
        my_list.append(num)
        print(f"当前已输入数字列表: {my_list}")
    except ValueError:
        # 处理非数字输入
        if user_input.strip().lower() == 'done':
            # 输入done时计算结果
            if not my_list:
                print("没有输入任何数字,无法计算结果")
            else:
                total = sum(my_list)
                average = total / len(my_list)
                print(f"输入完成!")
                print(f"数字总和: {total}")
                print(f"数字平均值: {average:.2f}")
            break
        else:
            print("输入错误!请输入数字或'done'结束程序")

修正说明

  • 先获取原始输入内容,避免抛出异常时变量未定义的问题
  • 用sum()计算列表总和、len()获取元素个数来计算平均值,替代错误的eval用法
  • 明确区分'done'指令和其他无效输入的处理逻辑
  • 增加空列表判断,避免出现除以0的错误
  • 使用while True配合break替代标志位,逻辑更简洁直观

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 20:10:48