You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Turtle绘制赫斯特圆点图案:循环漏画最后点的问题排查

问题原因分析

你的代码漏画最后一个点,核心是循环内的操作顺序搞反了:当前逻辑是先画点,再移动到下一个位置,导致每一行的最后一个位置(最右侧)只完成了移动,没有执行画点操作。

具体来看内层循环的执行流程(以第一行为例):

  • 初始位置是(-200, -200),x=-200
  • 第1次循环(xax=0):先在当前位置画点,然后移动到x=-200(原地不动),x变为-150
  • 第2次循环(xax=1):在当前位置(还是-200,-200)画点,然后移动到x=-150,x变为-100
  • ...
  • 第10次循环(xax=9):在x=200,-200的位置画点,然后移动到x=250,-200,x变为300
  • 内层循环结束,此时tim已经移动到250,-200,但这个位置没有画点

当所有行循环完成后,tim停在最后一行的最右侧位置250,250,但同样没有画点,这就是你漏画最后一个点的原因。

修复方案

调整循环内的操作顺序,先移动到目标位置,再画点,同时优化初始位置的设置逻辑,避免重复操作:

import turtle as t
import random

tim = t.Turtle()
screen = t.Screen()
color_list = [(202, 164, 110), (240, 245, 241), (236, 239, 243), (149, 75, 50), (222, 201, 136), (53, 93, 123), (170, 154, 41), (138, 31, 20), (134, 163, 184), (197, 92, 73), (47, 121, 86), (73, 43, 35), (145, 178, 149), (14, 98, 70), (232, 176, 165), (160, 142, 158), (54, 45, 50), (101, 75, 77), (183, 205, 171), (36, 60, 74), (19, 86, 89), (82, 148, 129), (147, 17, 19), (27, 68, 102), (12, 70, 64), (107, 127, 153), (176, 192, 208), (168, 99, 102)]

t.colormode(255)
tim.speed("fastest")
tim.penup()  # 全程不需要pendown,因为dot()不需要画笔落下
tim.hideturtle()

x = -200
y = -200

for yax in range(10):
    tim.setpos(x, y)  # 先移动到当前行的起始位置
    for xax in range(10):
        tim.dot(20, random.choice(color_list))  # 在当前位置画点
        tim.forward(50)  # 移动到下一个点的位置
    y += 50

screen.exitonclick()
优化说明
  • 去掉了冗余的pendown()/penup():turtle.dot()方法不需要画笔处于落下状态,全程保持penup()即可
  • 用tim.forward(50)替代手动修改x坐标再setpos,逻辑更直观
  • 先移动到目标位置再画点,确保每个位置都被覆盖,不需要额外补画最后一个点

内容的提问来源于stack exchange,提问作者Savi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 06:36:10