如何用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
相关产品推荐
相关产品推荐

