Глава 10 · Немного автоматизации!

Мини-проект — автоматизируем рисование квадрата

Возвращаемся к фигурам из главы 6 — на этот раз с циклами вместо ручного повторения, и с настоящими выполненными результатами.

Мини-проект — автоматизируем квадрат

Применим цикл к квадрату из главы 6. Обе версии кода ниже рисуют абсолютно одинаковый квадрат — единственная разница в том, сколько строк для этого понадобилось:

Квадрат: 8 строк вручную против 2 строк с циклом
Без цикла (глава 6)
artist.forward(100)
artist.right(90)
artist.forward(100)
artist.right(90)
artist.forward(100)
artist.right(90)
artist.forward(100)
artist.right(90)
С циклом for
for _ in range(4):
    artist.forward(100)
    artist.right(90)
Что использовать сегодня: цикл — тот же самый результат, но в 4 раза короче и с одним местом для изменения числа сторон.
avto_kvadrat.py
import turtle

screen = turtle.Screen()
screen.setup(width=300, height=300)
artist = turtle.Turtle()
artist.speed(0)
artist.pencolor("#5B24F9")
artist.pensize(3)

for _ in range(4):
    artist.forward(100)
    artist.right(90)

screen.exitonclick()
Результат выполнения
Квадрат, нарисованный Turtle
Реальный результат — оба варианта кода выше рисуют именно этот квадрат

Автоматизируем любую простую фигуру

Обобщим квадрат до шаблона, который рисует любой правильный многоугольник — используя формулу угла поворота из главы 6:

360°÷количество сторон=угол поворота
Чем больше сторон — тем меньше угол поворота на каждом шаге
avto_lyubaya_figura.py
storony = 8       # хотим восьмиугольник — просто меняем это число
dlina = 60
ugol = 360 / storony

for _ in range(storony):
    artist.forward(dlina)
    artist.right(ugol)
Одна переменная — любая фигура
Поменяйте storony на 3, 5, 6, 20 — программа автоматически нарисует треугольник, пятиугольник, шестиугольник или почти окружность, без единого изменения остального кода. Ниже — реальный результат для нескольких значений storony.

Треугольник (storony = 3)

treugolnik.py
import turtle

screen = turtle.Screen()
screen.setup(width=300, height=300)
artist = turtle.Turtle()
artist.speed(0)
artist.pencolor("#5B24F9")
artist.pensize(3)

storony = 3
dlina = 110
ugol = 360 / storony

for _ in range(storony):
    artist.forward(dlina)
    artist.right(ugol)

screen.exitonclick()
Результат выполнения
Треугольник, нарисованный Turtle
storony = 3, dlina = 110 → правильный треугольник

Пятиугольник (storony = 5)

pyatiugolnik.py
import turtle

screen = turtle.Screen()
screen.setup(width=300, height=300)
artist = turtle.Turtle()
artist.speed(0)
artist.pencolor("#5B24F9")
artist.pensize(3)

storony = 5
dlina = 75
ugol = 360 / storony

for _ in range(storony):
    artist.forward(dlina)
    artist.right(ugol)

screen.exitonclick()
Результат выполнения
Пятиугольник, нарисованный Turtle
storony = 5, dlina = 75 → правильный пятиугольник

Шестиугольник (storony = 6)

shestiugolnik.py
import turtle

screen = turtle.Screen()
screen.setup(width=300, height=300)
artist = turtle.Turtle()
artist.speed(0)
artist.pencolor("#5B24F9")
artist.pensize(3)

storony = 6
dlina = 65
ugol = 360 / storony

for _ in range(storony):
    artist.forward(dlina)
    artist.right(ugol)

screen.exitonclick()
Результат выполнения
Шестиугольник, нарисованный Turtle
storony = 6, dlina = 65 → правильный шестиугольник

Восьмиугольник (storony = 8)

vosmiugolnik.py
import turtle

screen = turtle.Screen()
screen.setup(width=300, height=300)
artist = turtle.Turtle()
artist.speed(0)
artist.pencolor("#5B24F9")
artist.pensize(3)

storony = 8
dlina = 55
ugol = 360 / storony

for _ in range(storony):
    artist.forward(dlina)
    artist.right(ugol)

screen.exitonclick()
Результат выполнения
Восьмиугольник, нарисованный Turtle
storony = 8, dlina = 55 → правильный восьмиугольник

Мини-проект: студия автоматических многоугольников

★★ Самостоятельная задача
Студия многоугольников

Оформите программу выше так, чтобы storony запрашивалось у пользователя через input() (не забудьте int()). Проверьте на нескольких значениях — включая большие, вроде 30 или 50, — и посмотрите, во что превращается фигура.

Практика: студия автоматических многоугольников
Модуль turtle открывает нативное окно Python — выполните локально в VS Code, PyCharm или Jupyter
Практика выполняется локально
Открыть практику →