【问题标题】:Triangular/geometric rainbow spiral三角形/几何彩虹螺旋
【发布时间】:2019-03-01 00:53:32
【问题描述】:

我一直在尝试找出如何使用 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

【问题讨论】:

  • 欢迎来到 StackOverflow。请不要将您的代码显示为图形 - 在您的问题中将其显示为文本。这使我们可以复制并粘贴您的代码以自己进行测试。它还允许其他人稍后通过网络搜索找到您的问题。

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


【解决方案1】:

让我们检查您的代码:

p = turtle.Pen()
p.reset()

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

输出

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

【讨论】:

猜你喜欢
  • 2019-09-22
  • 1970-01-01
  • 2022-10-14
  • 2012-11-12
  • 1970-01-01
  • 2013-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多