#python #loops #iteration #turtle-graphics #python-turtle
Вопрос:
поэтому я работаю над программой, в которой я хочу, чтобы на выходе было 4 треугольника длиной 20,40,60,80, расположенных вертикально, где вершина каждого треугольника должна быть ровно на полпути вдоль базовой линии треугольника выше.
Мне удалось правильно расположить первые два треугольника, но я не могу выровнять два верхних так, как хочу. Я знаю, что где-то иду не так, но, кажется, я этого не вижу
from turtle import * NUMBER_OF_SHAPES = 4 for shape in range(1, NUMBER_OF_SHAPES 1): #Draw a Triangle for sides in range(3): forward(20 * shape) left(120) #Move forward to start position of next triangle penup() left(120) forward(20 * shape) right(120) pendown()
Ответ №1:
from turtle import * import time NUMBER_OF_SHAPES = 4 for shape in range(1, NUMBER_OF_SHAPES 1): #Draw a Triangle for sides in range(5): #redraw some edges to place the cursor on the top forward(20 * shape) left(120) #Move forward to start position of next triangle penup() right(60) forward(10 * (shape 1)) # half of the size of the next triangle right(180) time.sleep(0.5) pendown()
Ответ №2:
Думайте за пределами треугольника:
from turtle import * for length in range(20, 100, 20): penup() sety(length ycor()) pendown() circle(-2*length/3, steps=3) hideturtle() exitonclick()
Здесь мы использовали circle()
метод черепахи для достижения двух целей: во-первых, нарисовать треугольник steps=3
, а во-вторых , нарисовать центрированные треугольники, начиная с их верхней точки, используя отрицательный радиус. Кроме того, нам просто нужно отрегулировать вертикальное положение.
Что касается вашего кода, я считаю, что проблема проще, чем вы пытаетесь ее решить. Все станет проще, если мы начнем с продвижения вперед на половину длины треугольника, а затем будем строить оттуда:
from turtle import * NUMBER_OF_SHAPES = 4 for shape in range(1, NUMBER_OF_SHAPES 1): forward(10 * shape) for _ in range(4): left(120) forward(20 * shape) right(120) exitonclick()
Это, в сочетании с изменением порядка шагов в цикле и увеличением числа итераций до 4, оставляет нас в центре следующего треугольника.