Python中While循环为何遗漏最后输入且列表首项为0?
解决7天降雨量统计程序的输入问题
你的代码核心问题是输入与列表追加的顺序颠倒,导致两个异常:
- 列表首项是初始赋值的
0,而非第一天的降雨量 - 最后一次输入的第7天数据未被加入列表,循环就提前结束
修正后的while循环版本
调整逻辑顺序,先输入当日降雨量,再追加到列表:
rain = [] counter = 1 while counter < 8: # 先获取当日降雨量 rainfall = float(input("Enter the rainfall of day {0}: ".format(counter))) # 再加入列表 rain.append(rainfall) counter += 1 # 计算并输出统计结果 total_rainfall = sum(rain) average_rainfall = total_rainfall / len(rain) print(f"每日降雨量: {rain}") print(f"总降雨量: {total_rainfall}") print(f"平均降雨量: {average_rainfall:.2f}")
更简洁的for循环版本
因为天数固定为7天,用range遍历更直观,无需手动维护计数器:
rain = [] for day in range(1, 8): rainfall = float(input(f"Enter the rainfall of day {day}: ")) rain.append(rainfall) total_rainfall = sum(rain) average_rainfall = total_rainfall / 7 print(f"每日降雨量: {rain}") print(f"总降雨量: {total_rainfall}") print(f"平均降雨量: {average_rainfall:.2f}")
运行修正后的代码,输入1到7的话,输出会是[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0],同时正确计算总降雨量和平均降雨量。
内容的提问来源于stack exchange,提问作者wiro
相关产品推荐
相关产品推荐

