python - 三角形/几何彩虹螺旋

标签 python python-3.x turtle-graphics spiral

我一直在尝试找出如何使用 Python 制作彩虹三角螺旋。我可以制作一个方形螺旋,但它不会导入颜色。而且它不使用三角形。

输出应该是什么样子:

enter image description here

我取得的成就:

enter image description here

我的代码:

    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() 以匹配您的示例螺旋。

输出

enter image description here

程序讲述一个故事。仔细选择角色名称(变量),并避免在故事中包含对其结果没有影响的元素(代码)。

关于python - 三角形/几何彩虹螺旋,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54936460/

相关文章:

python - 将 html 表转换为 pandas 数据框

python - VS Code Python 调试器 "timed out waiting for debuggee to spawn"

python - 为什么 Python Matplotlib 条形图的 X 轴刻度显示奇怪和错误的负值?

python - Turtle.Screen().screensize() 未输出正确的屏幕尺寸

python - 关于何时应该在函数中使用全局变量的经验法则

python - 如何创建多个处于不同位置的 turtle ?

python - 如何简化 python 中的 if 条件?

python - 如何在程序运行时中断它?

python - pymodbus:从 Modbus 设备读取字符串和多种类型的数据时出现问题

python - 多处理另一个函数的函数