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()