python中goto的用法_Python:turtle goto()命令

Python的一个优点是可以很容易地在解释器中测试小部分代码。让我们用翻译来检查两边的长度:In [82]: number_of_shapes = 4

In [83]: for shape in range(1, number_of_shapes + 1):

....: print(20 + shape * 10)

30

40

50

60

哦。现在我们可以清楚地看到forward(20 + shape * 10)不会使边的长度为20、40、60和80。注意,(20 + shape * 10)使边长增加了10。我们想增加20,所以使用(20 + shape * 20)代替:

^{pr2}$

哦,我搞错了。没问题,我们只需要把整件事减少20:In [85]: for shape in range(1, number_of_shapes + 1):

....: print(shape * 20)

....:

20

40

60

80

啊,好多了。在

现在代码如下:import turtle

number_of_shapes = 4

for shape in range(1, number_of_shapes+1):

#Draw a square

for sides in range(4):

turtle.forward(20 + shape * 20)

turtle.right(90)

#Move to position of next square

turtle.penup()

turtle.goto(shape * 10, shape * 10)

turtle.pendown()

turtle.mainloop()

Er75O.png

运行此代码时,请注意turtle从左上角的每个方块开始

然后开始向右转。在

现在让我们考虑一下goto(shape * 10, shape * 10)语句。它把我们带到哪里去了?让我们用翻译来找出:In [87]: for shape in range(1, number_of_shapes + 1):

....: print(shape * 10, shape * 10)

....:

10 10

20 20

30 30

40 40

将这些坐标与上面的结果进行比较,可以看到乌龟正在向上和向右移动。每个方块的左上角开始高一点,向右一点。相反,我们希望每个新方块的左上角开始更高一点,并向左:In [88]: for shape in range(1, number_of_shapes + 1):

....: print(-shape * 10, shape * 10)

....:

-10 10

-20 20

-30 30

-40 40

让我们看看现在发生了什么:

tSVd1.png

宾果。在

顺便说一下,将left和right和{}等相对命令与goto这样的绝对命令混合使用需要。。。协调。数学很挑剔。

如果您坚持使用纯粹的相对命令,那么就不必费心去想goto坐标公式的正确性:turtle.penup()

turtle.left(90)

turtle.forward(10)

turtle.left(90)

turtle.forward(10)

turtle.left(180)

turtle.pendown()

使用纯相对命令的优点是,现在您可以将海龟放置在任何您想要的位置,具有任何初始标题,并且仍然可以绘制嵌套的正方形:import turtle

number_of_shapes = 4

turtle.setheading(45)

turtle.penup()

turtle.goto(20, 50)

turtle.pendown()

for shape in range(1, number_of_shapes+1):

#Draw a square

for sides in range(4):

turtle.forward(20 + shape * 20)

turtle.right(90)

#Move to position of next square

turtle.penup()

turtle.left(90)

turtle.forward(10)

turtle.left(90)

turtle.forward(10)

turtle.left(180)

turtle.pendown()

turtle.mainloop()

G0F4A.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值