如何让多条件同时执行?Python Turtle海龟赛跑代码优化问询
让Python Turtle海龟同时起跑比赛的解决方案
嘿,这个问题我之前做海龟赛跑项目时也踩过坑!你现在的代码是把每个海龟的while循环挨个执行,相当于一个海龟跑完整个赛程,下一个才开始动,完全不是我们想要的“同时比赛”效果😅
为什么原来的代码不行?
每个while循环都是阻塞式的——只要这个循环没结束(比如海龟a还没到终点),后面的循环(海龟b、c等的)根本不会开始执行。所以看起来就是海龟依次出发,而不是同时起跑。
解决思路:用一个总循环统一控制所有海龟
我们可以写一个大的循环,每次循环里让所有还没到达终点的海龟都前进一小步,这样每个海龟在每次循环中都有机会移动,视觉上就实现了同时赛跑的效果。
修改后的完整代码
import turtle from random import randint # 初始化5只海龟,设置并排的起点位置 turtles = [turtle.Turtle() for _ in range(5)] start_x_positions = [-200, -100, 0, 100, 200] for idx, t in enumerate(turtles): t.penup() t.goto(start_x_positions[idx], 0) t.pendown() # 可选:给每只海龟设置不同颜色,更直观 t.color(["red", "blue", "green", "orange", "purple"][idx]) finish_line = 360 # 总循环:只要有海龟没到终点就继续 while True: # 遍历每只海龟,没到终点就随机前进 for t in turtles: if t.ycor() < finish_line: t.forward(randint(1, 5)) # 检查所有海龟是否都到达终点 all_finished = all(t.ycor() >= finish_line for t in turtles) if all_finished: break turtle.done()
代码说明
- 我把海龟放进了列表里,用循环遍历更简洁,不用重复写a、b、c、d、e的判断逻辑;
- 总循环每次都会让所有未完成的海龟移动一次,电脑执行速度快,视觉上就像它们在同时奔跑;
- 用
all()函数批量检查所有海龟的状态,代码更简洁易维护; - 额外加了颜色设置,能更清楚地区分不同海龟。
如果想升级玩法,还可以在海龟到达终点时打印冠军信息,不过核心的“同时起跑”逻辑就是这样啦!
内容的提问来源于stack exchange,提问作者Emil Vulic
相关产品推荐
相关产品推荐

