如何在Python循环中记录所有输入值,输入end终止后计算实数序列平均值
实现思路
- 新增一个空列表作为数值存储容器,Python列表支持动态新增元素,不用提前限定输入长度,所有合法输入的数值都会被留存到该列表中供后续计算使用。
- 输入校验增加异常捕获逻辑,兼容用户输入非数字、非
end的非法内容场景,避免程序直接崩溃。 - 平均值计算前先判断存储列表是否为空,规避用户未输入任何数值就输入
end导致的除以0报错。
完整实现代码
# 初始化存储数值的列表 num_list = [] while True: input_content = input("Enter the number: ") # 输入为end时终止输入流程 if input_content == "end": break # 尝试将输入转换为实数,处理非法输入 try: num = float(input_content) num_list.append(num) except ValueError: print("输入非法,请输入实数或者end") # 计算平均值 if num_list: average = sum(num_list) / len(num_list) print(f"输入序列的平均值为: {average:.2f}") else: print("未输入任何有效数值,无法计算平均值")
可选优化方案
如果不需要回溯历史输入值,仅需要计算平均值,也可以用两个变量分别累计数值总和、有效输入个数,无需维护列表,内存占用更低,适合超大输入量的场景:
total = 0 count = 0 while True: input_content = input("Enter the number: ") if input_content == "end": break try: num = float(input_content) total += num count += 1 except ValueError: print("输入非法,请输入实数或者end") if count > 0: average = total / count print(f"输入序列的平均值为: {average:.2f}") else: print("未输入任何有效数值,无法计算平均值")
内容的提问来源于stack exchange,提问作者user17253648
相关产品推荐
相关产品推荐

