光标移动脱线龟

Cursor moving off line Turtle

我目前正在 Python 使用 Turtle 模块完成编程任务,我有以下代码:

from turtle import *
number_of_shapes = 4
for shape in range(1, number_of_shapes + 1):
    size = shape * 20
    for sides in range(4):
        forward(size + 10)
        right(90)
penup()
forward(size + 10)
left(90)
forward(size + 30)
right(90)
pendown()

这会产生以下输出:

不过,我想让乌龟停在这里:

我试过更改所有数字,但似乎找不到与乌龟相关的值,有人可以帮忙吗?

你刚刚搞砸了最后一部分是怎么做的:

from turtle import *
number_of_shapes = 4
a=5
for shape in range(1, number_of_shapes+1):
    size = shape * 20
    for sides in range(a):
        forward(size + 10)
        right(90)
    right(180)
    a=6

如果你需要什么就问:)

让我们尝试不同的方法来找点乐子。这将绘制相同的图形并将海龟留在您想要的位置。但是,它会最小化海龟运动(不会在同一条线上重绘),代价是代码略多,并且在绘图时永远不会将笔从纸上移开:

from turtle import *

NUMBER_OF_SHAPES = 4

angle = 90
magnitude = -1
shape = NUMBER_OF_SHAPES

for _ in range(2):
    right(angle)
    forward(shape * 20 + 10)

    for _ in range(NUMBER_OF_SHAPES - 1):
        right(angle)
        forward((2 * shape + magnitude + 1) * 20)

        shape += magnitude
        angle = -angle

    magnitude = -magnitude

    right(angle)
    forward(shape * 20 + 10)

done()

我们的想法是 viewing/implementing 它不是作为一组多个正方形,而是 view/implement 它是两条不同大小的锯齿形线,在它们的末端相遇。

Is it possible to produce the same output with one loop?

一种方法是放弃绘图并切换到冲压,方法是将乌龟本身变成正方形。这将消除用于绘制正方形的循环,只需要一个循环来调整大小、标记和移动正方形:

from turtle import *

NUMBER_OF_SHAPES = 4
CURSOR_SIZE = 20

shape('square')
fillcolor('white')
penup()

for n in range(1, NUMBER_OF_SHAPES + 1):
    size = n * 20 + 10
    goto(xcor() + size/2, ycor() + size/2)
    shapesize(size / CURSOR_SIZE)
    stamp()
    goto(xcor() + size/2, ycor() + size/2)

shapesize(1)
shape('classic')
fillcolor('black')
done()

这会产生相同的可见结果,但通过具有自己的规则和限制的完全不同的方式: