while循环计算平均词长结果不一致问题排查
问题分析与修复
你的代码存在以下关键错误:
- 嵌套while循环逻辑混乱:内层
while word != ""会导致输入流程错乱,重复调用input会直接跳过当前输入的单词,转而统计下一次输入的内容,造成数据丢失。 - 初始统计逻辑错误:第一个输入的单词统计后,
average被直接赋值为该单词的长度,而非所有已输入单词的平均值。 - 过早使用
round导致精度丢失:在累加单词长度时就调用round,会提前截断数值,影响最终平均值的准确性。 - 空输入处理漏洞:若用户第一次输入直接按回车,
count仍会被加1,后续计算会基于错误的计数得出结果。
修复后的代码
word_length_count = 0 count = 0 while True: word = input("Enter a word (press Enter to quit): ") if word == "": break # 仅统计非空的有效单词 count += 1 word_length_count += len(word) # 处理未输入任何单词的情况,避免除以0错误 if count > 0: average = word_length_count / count print("The average length of the words entered is", round(average)) else: print("No words were entered.")
修复说明:
- 简化循环逻辑:用
while True构建无限循环,每次输入后直接判断是否为空,为空则退出循环,非空则统计数据,流程清晰无遗漏。 - 修正统计规则:仅在输入有效单词时才累加计数和长度,避免空输入干扰统计结果。
- 调整
round使用时机:累加长度时保留原始数值,仅在最终计算平均值后再取整,保证计算精度。 - 增加边界判断:当未输入任何单词时给出提示,避免出现除以0的运行错误。
内容的提问来源于stack exchange,提问作者Kotor2
相关产品推荐
相关产品推荐

