计算用户输入整数平均值时遇ZeroDivisionError问题求助
问题修复方案
你的程序存在两个核心问题:
- 仅输入0时,
print("No numbers entered.")永远不会执行——因为break语句在它前面,触发条件后会直接终止循环,跳过后续代码。 - 空列表调用
average函数会触发ZeroDivisionError,因为len(mylist)为0,除法无意义。
以下是修复后的代码:
number_list = [] def average(mylist): return sum(mylist) / len(mylist) while True: number = int(input('Enter a number: ')) if number == 0: break number_list.append(number) # 循环结束后判断输入情况 if not number_list: print("No numbers entered.") else: print("The average of the numbers entered is", average(number_list))
关键修改说明:
- 简化循环内的判断逻辑:只要输入0就直接终止循环,把输入有效性的检查放到循环结束后统一处理,逻辑更清晰。
- 循环结束后先判断
number_list是否为空:如果为空则输出提示,否则再计算平均值,彻底避免ZeroDivisionError。
内容的提问来源于stack exchange,提问作者ripper2310
相关产品推荐
相关产品推荐

