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

Python turtle绘制行星时定义画笔颜色后画笔仍未变色问题

问题原因

颜色不生效本质是阴影绘制循环根本没有执行,结合代码里的其他错误,具体问题如下:

  • 循环判断条件逻辑错误:arc初始值为70,编写的循环条件while arc < 45永远不成立,循环体完全不会运行,自然看不到新颜色的绘制效果
  • 方法名拼写错误:循环内的pen.cirlce是错误写法,正确为pen.circle,执行到此处会直接抛出异常终止运行
  • 循环终止逻辑不匹配:循环内每次执行arc -= 2,对应正确的循环条件应为while arc > 45,初始值70每次减2,降到45以下时停止,符合弧段绘制的设计逻辑

修正后代码

from turtle import Screen, Pen
import turtle
import random
plansize = random.randrange(1, 5)


screen = Screen()
screen.title("Planet test")
pen = Pen()
pen.speed(0)
pen.pensize(3)
pen.hideturtle()
turtle.bgcolor('black')
plasizetrue = plansize*50
screen.colormode(255)

def placreate():
    arc = 70
    randomr = int(random.randrange(0,255))
    randomg = int(random.randrange(0,255))
    randomb = int(random.randrange(0,255))
    pen.pencolor(randomr, randomg, randomb)
    counter = 0
    plasizetrue = plansize*100
    pen.right(90)
    pen.circle(plasizetrue)
    while plasizetrue > 0:
        plasizetrue -= 1
        pen.circle(plasizetrue)
        counter += 1
    # 用min简化边界判断,减少冗余代码
    randomr = min(randomr + 50, 255)
    randomg = min(randomg + 50, 255)
    randomb = min(randomb + 50, 255)
    pen.pencolor(randomr, randomg, randomb)
    # 修正循环条件
    while arc > 45:
        pen.circle(counter, -arc)
        pen.left(87)
        pen.forward(3)
        pen.right(87)
        arc -= 2
        # 修正拼写错误
        pen.circle(counter, arc)
        pen.right(87)
        pen.forward(3)
        pen.right(87)

placreate()
turtle.done()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:06:04