只需创建一个python程序,创建一个名为letterX的函数,它就会生成一个X.两条线必须相互成90度。指针终止于初始位置。
我很容易解决这个问题,只是想知道你是否可以把它放到一个循环中或者只是简化它。我不知道如何,因为我必须改变方向而不是循环相同的代码。任何帮助将不胜感激。
import turtle
t = turtle.Turtle()
s = turtle.Screen()
def letterX(t,length):
t.down()
t.right(45)
t.forward(length/2)
t.right(180)
t.forward(length)
t.right(180)
t.forward(length/2)
t.left(90)
t.forward(length/2)
t.right(180)
t.forward(length)
t.right(180)
t.forward(length/2)
t.right(45)
t.up()
letterX(t,100)
答案 0 :(得分:0)
就个人而言,我将乌龟效率测量为最小化绘图 - 你的乌龟正在重新绘制它已绘制的东西,所以让我们优化它:
def letterX(t, length):
half_length = length / 2
hypotenuse = (2 * half_length**2)**0.5
t.pendown()
t.right(45)
t.forward(half_length)
t.left(135)
t.penup()
t.forward(hypotenuse)
t.pendown()
t.left(135)
t.forward(length)
t.right(135)
t.penup()
t.forward(hypotenuse)
t.pendown()
t.right(135)
t.forward(half_length)
t.left(45)
t.penup()
但是,如果您真的需要最少量的代码和循环,请考虑:
def letterX(t, length):
for angle in range(-135, 136, 90):
mock = t.clone()
mock.left(angle)
mock.forward(length / 2)
mock.hideturtle()
如果您正在寻找速度和真正神秘的代码,请考虑加盖:
def letterX(t, length):
t.shapesize(length / 10, 1 / 10) # assuming default turtle image
for angle in range(-45, 91, 135):
t.tilt(angle)
t.stamp()
t.tilt(-45)
t.shapesize(1)
答案 1 :(得分:0)
关键是找出可重复的单位。由于您希望在所有单位之后恢复乌龟,因此最简单的方法是在每个单位之后恢复它。
import turtle
t = turtle.Turtle()
s = turtle.Screen()
def line(t, length, angle):
half = length/2
t.left(angle)
t.forward(half)
t.right(180)
t.down()
t.forward(length)
t.up()
t.right(180)
t.forward(half)
t.right(angle)
def letterX(t,length):
for angle in (45, 135):
line(t, length, angle)
letterX(t,100)