如何在Python跑步统计任务中正确终止循环?连续零输入修复
修正无列表实现的跑步统计Python代码
原代码存在两个关键问题:
- 触发连续3天0的终止条件后,仍会执行后续的平均距离计算与输出,不符合需求
- 非连续的0会被累计计数,连续懒天数的逻辑错误
修正后的代码:
def main(): days = int(input("Enter the number of days: ")) day = 1 counter = 0 total = 0 lazy_break = False # 标记是否因连续懒天终止 while day <= days: length = float(input(f"Enter day {day} running length: ")) day += 1 total += length if length == 0: counter += 1 if counter >= 3: print("\nYou had too many consecutive lazy days!") lazy_break = True break else: counter = 0 # 非0时重置连续计数 # 只有没触发懒天终止时,才计算平均并输出 if not lazy_break: average = round(total / days, 2) print() if average < 3: print(f"Your running mean of {average} km was too low!") else: print(f"You were persistent runner! With a mean of {average} km.") if __name__ == "__main__": main()
修改说明:
- 新增
lazy_break变量,用来记录是否因为连续3天0终止循环,避免后续代码执行 - 当输入非0距离时,重置
counter为0,确保连续0的计数准确 - 循环结束后先判断
lazy_break状态,只有正常完成所有天数输入时,才计算并输出平均距离相关内容
内容的提问来源于stack exchange,提问作者Student_Py
相关产品推荐
相关产品推荐

