вложенный треугольник в питоне с черепахой - PullRequest
0 голосов
/ 29 апреля 2019

Моя цель - создать простое графическое представление набора вложенных треугольников, как показано на рисунке 1. Выходные данные должны состоять из 4 равносторонних треугольников (равные стороны, внутренние углы 60 градусов). Треугольники должны иметь стороны длиной 20, 40, 60 и 80 соответственно. Используйте расстояние 7 между нижними горизонтальными линиями соседних треугольников.

Я видел пост об этом здесь, но ответы были слишком сложными, как вы можете видеть из моего кода, это одна из моих первых программ.

from turtle import *
number_of_shapes = 2

for shape in range(1, number_of_shapes + 1):
    # Draw A Triangle
    for sides in range(1, 4):
        forward(10 + shape * 10 )
        left(120)
right(90)
forward(7 + shape)

Мой вопрос: как мне просто выровнять мои треугольники друг относительно друга?

1 Ответ

1 голос
/ 29 апреля 2019

Без обещанной иллюстрации я собираюсь предположить, что вы пытаетесь нарисовать вложенные треугольники.Если вы начнете с угла, то вам будет сложнее, поэтому я предлагаю вам переставить код так, чтобы он начинался в середине нижней части треугольника и рисовал оттуда.Это требует рисования дна в два этапа, но легче отрегулировать наше позиционирование, если мы работаем из центра:

from turtle import *

number_of_shapes = 4

for shape in range(1, number_of_shapes + 1):
    # Draw A Triangle
    forward(shape * 10)
    for _ in range(2):
        left(120)
        forward(shape * 20)
    left(120)
    forward(shape * 10)

    right(90)
    penup()
    forward(7)
    pendown()
    left(90)

done()

enter image description here

Хотя расстояние нене идеально, так как основания должны быть ближе к 6px друг от друга, а не к 7px, как указано.Но мы можем полностью исключить этот расчет и значительно упростить код, используя штамповка вместо рисование :

from turtle import *

number_of_shapes = 4

shape('triangle')
fillcolor('white')
right(30)

for size in range(number_of_shapes, 0, -1):
    shapesize(size)
    stamp()

done()

enter image description here

Используя штамповку, мы работаем от центра треугольника, а не от его края.Поскольку размер курсора по умолчанию равен 20, изменение размера выпадает бесплатно.

...