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
相关产品推荐
相关产品推荐

