请求修正田径跑步规划函数while循环的多行输出异常问题
修复跑道跑步规划函数的循环逻辑
原代码的问题在于循环内直接计算了总圈数,没有逐圈累加记录,导致仅输出最终的一行结果。要实现逐圈记录直到覆盖目标距离,需要分两步处理:先记录所有完整圈,再处理剩余的不足一圈的距离。
修改后的代码如下:
import math LAP_DISTANCE = 400 def plan_track_run(a_distance): count = 0 total = 0 r_output = "" # 先处理所有完整的圈 while total + LAP_DISTANCE <= a_distance: count += 1 total += LAP_DISTANCE r_output += f"lap #{count} time ____ s in {count:.2f} x {LAP_DISTANCE}m = {total:.2f}m\n" # 处理剩余的不足一圈的距离 if total < a_distance: remaining_laps = (a_distance - total) / LAP_DISTANCE count += remaining_laps total = a_distance r_output += f"lap #{math.ceil(count)} time ____ s in {count:.2f} x {LAP_DISTANCE}m = {total:.2f}m\n" return r_output.strip()
验证效果
- 当
a_distance=200时,输出:
lap #1 time ____ s in 0.50 x 400m = 200.00m
- 当
a_distance=1500时,输出:
lap #1 time ____ s in 1.00 x 400m = 400.00m lap #2 time ____ s in 2.00 x 400m = 800.00m lap #3 time ____ s in 3.00 x 400m = 1200.00m lap #4 time ____ s in 3.75 x 400m = 1500.00m
逻辑说明
- 完整圈循环:每次累加1圈,直到再加一圈就会超过目标距离,确保每一圈都是完整的400米,并逐行记录。
- 剩余距离处理:计算剩余距离对应的圈数比例,更新总圈数和总距离,添加最后一行记录。
- 使用
strip()去除末尾多余的换行符,让输出更整洁。
内容的提问来源于stack exchange,提问作者M.J.
相关产品推荐
相关产品推荐

