我正在尝试使用 python 中的海龟制作一幅赫斯特画(点图案)。我设法实现了它。 Hirst_painting_dot_pattern 但是我的 for 循环没有按照我预期的方式工作。它省略了最后一次迭代。
在下面的代码中,我的 for 循环没有生成最后一个点。因此,我在循环末尾添加了一行来制作最后一个点。但我不明白为什么最后一个点没有绘制,尽管它在范围内。有人能给我解释一下吗?
import turtle as t
import random
tim = t.Turtle()
screen = t.Screen()
color_list = [(202, 164, 110), (240, 245, 241), (236, 239, 243), (149, 75, 50), (222, 201, 136), (53, 93, 123), (170, 154, 41), (138, 31, 20), (134, 163, 184), (197, 92, 73), (47, 121, 86), (73, 43, 35), (145, 178, 149), (14, 98, 70), (232, 176, 165), (160, 142, 158), (54, 45, 50), (101, 75, 77), (183, 205, 171), (36, 60, 74), (19, 86, 89), (82, 148, 129), (147, 17, 19), (27, 68, 102), (12, 70, 64), (107, 127, 153), (176, 192, 208), (168, 99, 102)]
t.colormode(255)
tim.speed("fastest")
tim.penup()
tim.setpos(-200, -200)
tim.pendown()
x = -200
y = -200
for yax in range(10):
for xax in range(10):
tim.pendown()
tim.dot(20, random.choice(color_list))
tim.penup()
tim.setpos(x, y)
x += 50
y += 50
x = -200
tim.dot(20, random.choice(color_list))
tim.hideturtle()
screen.exitonclick()
的 for 循环工作正常,并没有跳过最后一次迭代。问题在于是在放置点 之后 推进海龟的位置。因此,在最后一次迭代中,放置点,但海龟会移动到尚未放置点的下一个位置。
可以通过在循环 之前 而不是 之后 移动海龟来解决此问题:
import turtle as t
import random
tim = t.Turtle()
screen = t.Screen()
color_list = [(202, 164, 110), (240, 245, 241), (236, 239, 243), (149, 75, 50), (222, 201, 136), (53, 93, 123), (170, 154, 41), (138, 31, 20), (134, 163, 184), (197, 92, 73), (47, 121, 86), (73, 43, 35), (145, 178, 149), (14, 98, 70), (232, 176, 165), (160, 142, 158), (54, 45, 50), (101, 75, 77), (183, 205, 171), (36, 60, 74), (19, 86, 89), (82, 148, 129), (147, 17, 19), (27, 68, 102), (12, 70, 64), (107, 127, 153), (176, 192, 208), (168, 99, 102)]
t.colormode(255)
tim.speed("fastest")
tim.penup()
tim.setpos(-200, -200)
x = -200
y = -200
for yax in range(10):
for xax in range(10):
tim.setpos(x, y) # 将海龟移到此处
tim.pendown()
tim.dot(20, random.choice(color_list))
tim.penup()
x += 50
y += 50
x = -200
tim.hideturtle()
screen.exitonclick()
通过这种方式,可以在每次迭代开始时将海龟定位到正确的位置,确保放置所有点,包括最后一次迭代中的点。不再需要手动添加最后一个点了。
标签:python,design-patterns,graphics,turtle-graphics,dot From: 78807251