光标下线龟

问题描述

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

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()

这会产生以下输出

enter image description here

但是,我想让乌龟停在这里

enter image description here

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

解决方法

你刚刚搞砸了这里的最后一部分是如何做到的:

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()

我们的想法是,与其将其视为一组多个正方形,不如将其视为两条不同大小的之字形线并在其末端相遇。

enter image description here

是否有可能用一个循环产生相同的输出?

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

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()

这产生了相同的可见结果,但通过完全不同的方式产生了自己的规则和约束:

enter image description here