问题描述
我目前正在使用 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()
这会产生以下输出:
但是,我想让乌龟停在这里:
我已尝试更改所有数字,但似乎无法找到与乌龟相关的值,有人可以帮忙吗?
解决方法
你刚刚搞砸了这里的最后一部分是如何做到的:
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()
我们的想法是,与其将其视为一组多个正方形,不如将其视为两条不同大小的之字形线并在其末端相遇。
是否有可能用一个循环产生相同的输出?
一种方法是放弃绘图并切换到冲压,让海龟本身成为正方形。这将消除用于绘制正方形的循环,只需要一个循环来调整正方形的大小、标记和移动:
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()
这产生了相同的可见结果,但通过完全不同的方式产生了自己的规则和约束: