
本文详解如何编写一个循环程序,持续接收用户输入的整数,直到输入 -1 为止,并自动计算此前所有有效输入的算术平均值,同时指出常见逻辑错误及正确实现方式。
本文详解如何编写一个循环程序,持续接收用户输入的整数,直到输入 -1 为止,并自动计算此前所有有效输入的算术平均值,同时指出常见逻辑错误及正确实现方式。
在初学 Python 循环与变量管理时,一个典型任务是:持续读取用户输入的数字,当输入 -1 时停止,并输出之前所有输入数字的平均值。许多初学者容易混淆 for 与 while 的适用场景,误将单次输入当作可迭代字符串处理(如原代码中对 input() 返回字符串逐字符遍历),导致逻辑完全偏离目标。
✅ 正确思路应是:
- 使用 while True 构建无限循环,配合 break 在满足终止条件(输入 -1)时退出;
- 每次循环中单独获取一次输入,并立即转换为整数(int(input(...)));
- 若输入不为 -1,则累加到总和 sum,并递增计数器 count;
- 循环结束后,直接计算 sum / count —— 注意:需确保 count > 0,否则会触发除零错误(实际应用中建议增加空输入保护,本文聚焦核心逻辑)。
以下是推荐的简洁、健壮实现:
图片提示词生成器?不止如此。 马甲系统 —— 把脑海中的画面,翻译成AI能理解的专业表达。 用得越多,它越懂你:首次需要多问几句确认方向,用久了几乎一说就懂。 用得越多,它越快:缓存机制让后续对话越来越省。 RAG进化:成功案例持续入库,越跑越聪明。 输入「新手指南」查看完整功能介绍
count = 0
total = 0
while True:
try:
num = int(input('Enter a number (-1 to end): '))
if num == -1:
break
total += num
count += 1
except ValueError:
print("Invalid input. Please enter an integer.")
continue
if count == 0:
print("No valid numbers entered.")
else:
average = total / count
print(f"Average: {average:.2f}")
? 关键说明:
- 原代码错误在于:adad = input(...) 返回的是字符串,for i in adad 会遍历每个字符(如输入 "123" 会得到 '1', '2', '3'),而非数值;且内层 while i != -1 逻辑混乱,i 是字符,无法与整数 -1 直接比较。
- while True + break 是 Python 中模拟“先执行、后判断”逻辑(类似其他语言的 do-while)的标准写法。
- 使用 try-except 可提升程序鲁棒性,避免非数字输入导致崩溃。
- 若偏好更直观的数据存储方式,也可用列表收集输入(见答案中第二种方案),但对大量数据而言,直接累加 total 和 count 更省内存、更高效。
? 总结:掌握变量初始化、循环控制流(break)、类型转换(int())以及输入验证,是实现此类交互式数值处理程序的核心基础。务必区分“输入动作”与“数据处理动作”,让每次循环专注完成一次完整输入→判断→累加的闭环。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










