我一直在尝试找出如何使用Python制作彩虹三角形螺旋。我可以制作一个方形螺旋线,但不会导入颜色。而且它不使用三角形。
输出应该是什么样的
我取得的成就:
我的代码:
import turtle
import colorsys
p = turtle.Pen()
p.reset()
p.down()
p.speed(22)
for i in range(100):
p.forward(i)
p.left(22222)
dog = 0
for i in range(100):
color = colorsys.hsv_to_rgb(dog,1,1)
turtle.pencolor(color)
dog += 0.01
答案 0 :(得分:1)
让我们查看您的代码:
p = turtle.Pen()
p.reset()
reset()
的作用是什么?什么都没有设置,那么为什么重置呢?不要添加无法实现目标的代码。再次在这里:
p.down()
笔开始向下移动,因此无需进行更改。在此命令中:
p.speed(22)
22
来自哪里? speed()
的文档说它的参数是1(“最低”)到10(“快速”),0表示“最快”。它将22转换为其他值-如果您不知道什么,那就不要使用它!为了清楚起见,您应该使用“ slow”之类的符号替代。
p.left(22222)
22222
来自哪里?您为什么不惊讶没有三角形?对于一个完美的等边三角形,我们将使用120度,但是我们不想要一个理想的三角形,我们想要一个螺旋线,因此我们将为该值增加一个或两个角度。为什么使用此变量名:
dog = 0
变量名称应该阐明我们在做什么,而不是使它晦涩难懂。该变量将在“ HSV”颜色值的“ H”部分中循环,其中“ H”代表“色相”。因此,让我们使用它。
最后,我们需要一个循环,而不是两个循环,以便同时进行绘画和颜色更改:
from turtle import Screen, Pen
import colorsys
screen = Screen()
screen.title("Rainbow Spiral")
pen = Pen()
pen.speed('fastest')
hue = 0.0 # range is 0.0 to 1.0
for i in range(200):
color = colorsys.hsv_to_rgb(hue, 1, 1) # pen wants RGB
pen.pencolor(color)
pen.forward(i * 2) # double size
pen.right(121) # 120 degrees is an equilateral triangle
hue += 0.005 # increment by 1/200
pen.hideturtle()
screen.exitonclick()
请注意,我将left()
更改为right()
以匹配您的示例螺旋。
输出
程序讲述一个故事。仔细选择您的角色名称(变量),并避免在故事中包含不影响其结果的元素(代码)。