我一直在尝试找出如何使用 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
最佳答案
让我们检查一下您的代码:
p = turtle.Pen()
p.reset()
reset()
是做什么用的?尚未设置任何内容,为什么要重置?不要添加不会进一步实现您的目标的代码。再次在这里:
p.down()
笔开始时向下,因此无需更换。在此命令中:
p.speed(22)
22
来自哪里? speed()
的文档说它的参数是 1(“最慢”)到 10(“快”),其中 0 表示“最快”。它将 22 转换成其他值——如果您不知道什么,那就不要使用它!为了清楚起见,您应该使用“慢”等象征性替代词。
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()
以匹配您的示例螺旋。
输出
程序讲述一个故事。仔细选择角色名称(变量),并避免在故事中包含对其结果没有影响的元素(代码)。
关于python - 三角形/几何彩虹螺旋,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54936460/