Python Turtle 如何让它自动下降?
Python Turtle How to program it to go down automatically?
我必须编写一个绘制三角形的函数。我设法很好地绘制了彼此相邻的三角形,但我无法以三角形一个位于另一个下方的方式对其进行编程。或者至少不会自动进行。
我是这样做的:
import turtle
otto = turtle.Turtle()
def triangle(t, l):
t.color("cadetblue")
t.begin_fill()
for i in range(3):
t.fd(l)
t.lt(360/3)
t.end_fill()
def pile_triangle (t,l):
for i in range(1):
triangle(t, l)
t.penup()
t.goto(0,-70)
t.pendown()
for i in range(1):
triangle(t, l)
t.penup()
t.goto(0,-140)
t.pendown()
for i in range(1):
triangle(t, l)
t.penup()
t.goto(0,-210)
t.pendown()
for i in range(1):
triangle(t, l)
otto = turtle.Turtle()
pile_triangle(otto, 80)
turtle.mainloop()
turtle.bye()
因此,如您所见,当 l 的值增加时,会出现间隙或三角形重叠。可以做不同的吗?以便它绘制四个三角形并匹配长度 l?
这是你想要的吗?
import turtle
def triangle(t,l):
t.color("cadetblue")
t.begin_fill()
t.lt(360/6)
for i in range(3):
t.lt(-360/3)
t.fd(l)
t.end_fill()
t.penup()
t.lt(-360/3)
t.fd(l)
t.lt(-360/3)
t.fd(l/2)
t.lt(180)
otto = turtle.Turtle()
for i in range(3):
triangle(otto,50)
您的原始代码非常接近,您只需要做一些事情:事情 1 是将重复的代码模式变成一个循环。事情 2 是计算移动量(三角形的高度)而不是使用固定值。从三角学你记得等边三角形的高是:
side_length * sqrt(3) / 2
这是对您的代码进行的修改,其中包含以下两项更改:
import turtle
def triangle(t, length):
t.begin_fill()
for i in range(3):
t.forward(length)
t.left(360 / 3)
t.end_fill()
def pile_triangle(t, length):
height = length * 3 ** 0.5 / 2 # height of triangle given a side
for i in range(1, -3, -1): # center stack vertically on screen
t.penup()
t.goto(-length / 2, i * height) # center stack horizontally on screen
t.pendown()
triangle(t, length)
otto = turtle.Turtle()
otto.color("cadetblue")
pile_triangle(otto, 100)
turtle.mainloop()
turtle.bye()
我必须编写一个绘制三角形的函数。我设法很好地绘制了彼此相邻的三角形,但我无法以三角形一个位于另一个下方的方式对其进行编程。或者至少不会自动进行。
我是这样做的:
import turtle
otto = turtle.Turtle()
def triangle(t, l):
t.color("cadetblue")
t.begin_fill()
for i in range(3):
t.fd(l)
t.lt(360/3)
t.end_fill()
def pile_triangle (t,l):
for i in range(1):
triangle(t, l)
t.penup()
t.goto(0,-70)
t.pendown()
for i in range(1):
triangle(t, l)
t.penup()
t.goto(0,-140)
t.pendown()
for i in range(1):
triangle(t, l)
t.penup()
t.goto(0,-210)
t.pendown()
for i in range(1):
triangle(t, l)
otto = turtle.Turtle()
pile_triangle(otto, 80)
turtle.mainloop()
turtle.bye()
因此,如您所见,当 l 的值增加时,会出现间隙或三角形重叠。可以做不同的吗?以便它绘制四个三角形并匹配长度 l?
这是你想要的吗?
import turtle
def triangle(t,l):
t.color("cadetblue")
t.begin_fill()
t.lt(360/6)
for i in range(3):
t.lt(-360/3)
t.fd(l)
t.end_fill()
t.penup()
t.lt(-360/3)
t.fd(l)
t.lt(-360/3)
t.fd(l/2)
t.lt(180)
otto = turtle.Turtle()
for i in range(3):
triangle(otto,50)
您的原始代码非常接近,您只需要做一些事情:事情 1 是将重复的代码模式变成一个循环。事情 2 是计算移动量(三角形的高度)而不是使用固定值。从三角学你记得等边三角形的高是:
side_length * sqrt(3) / 2
这是对您的代码进行的修改,其中包含以下两项更改:
import turtle
def triangle(t, length):
t.begin_fill()
for i in range(3):
t.forward(length)
t.left(360 / 3)
t.end_fill()
def pile_triangle(t, length):
height = length * 3 ** 0.5 / 2 # height of triangle given a side
for i in range(1, -3, -1): # center stack vertically on screen
t.penup()
t.goto(-length / 2, i * height) # center stack horizontally on screen
t.pendown()
triangle(t, length)
otto = turtle.Turtle()
otto.color("cadetblue")
pile_triangle(otto, 100)
turtle.mainloop()
turtle.bye()