![](/img/trans.png)
[英]Is there a way to shorten my code so that I don't have to write “turtle.” every time I use functions from the turtle module?
[英]Simplify/shorten code for turtle using functions/loops
我需要帮助来使用函数/循环来简化/缩短 turtle 的代码。
我正在使用 Python turtle 为角色编写程序。 我设法正确地绘制了角色,但我找不到使代码更短/更高效的方法,因为它看起来太长了。 作为新手,我真的需要帮助:
import turtle
win = turtle.Screen()
ninja = turtle.Turtle()
ninja.pensize(10)
ninja.forward(85)
ninja.penup()
ninja.goto(36,0)
ninja.pendown()
ninja.right(135)
ninja.forward(40)
ninja.left(135)
ninja.forward(67)
ninja.penup()
ninja.goto(58,-12)
ninja.pendown()
ninja.right(38)
ninja.forward(34)
ninja.penup()
ninja.goto(44,-32)
ninja.pendown()
ninja.right(52)
ninja.forward(38)
ninja.penup()
ninja.goto(5,-48)
ninja.pendown()
ninja.left(90)
ninja.forward(75)
ninja.penup()
ninja.goto(-4,-70)
ninja.pendown()
ninja.forward(92)
win.mainloop()
我查看了你的代码,得出了自己的改进逻辑:首先,写得笔不离纸; 第二,尽可能缩短它。 以下是大约四个较短的 turtle 命令,从不抬起笔并产生几乎相同的输出:
from turtle import Screen, Turtle
turtle = Turtle()
turtle.pensize(9)
turtle.forward(85)
turtle.backward(49)
turtle.left(45)
turtle.backward(40)
turtle.right(45)
turtle.forward(70)
turtle.right(38)
turtle.forward(7)
turtle.backward(33)
turtle.forward(24)
turtle.left(39)
turtle.backward(32)
turtle.right(90)
turtle.forward(43)
turtle.left(90)
turtle.forward(44)
turtle.backward(93)
turtle.forward(49)
turtle.left(90)
turtle.forward(23)
turtle.right(90)
turtle.forward(36)
turtle.backward(78)
turtle.hideturtle()
Screen().mainloop()
对于最后一笔,不提笔花费了我一个额外的 turtle 命令,因此可以使这段代码稍微短一些。 然而,在设计了一个非提升解决方案后,我们可以监控笔停止的位置并将其转化为简单的连接点:
from turtle import Screen, Turtle
points = [ \
(85, 0), (36, 0), (8, -28), (78, -28), (83, -33), \
(57, -12), (76, -27), (44, -28), (45, -71), (89, -70), \
(-4, -71), (45, -71), (44, -48), (80, -47), (2, -48), \
]
turtle = Turtle()
turtle.pensize(9)
for point in points:
turtle.goto(point)
turtle.hideturtle()
Screen().mainloop()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.