Глава 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()
Результат выполнения
Автоматизируем любую простую фигуру
Обобщим квадрат до шаблона, который рисует любой правильный многоугольник — используя формулу угла поворота из главы 6:
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()
Результат выполнения
Пятиугольник (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()
Результат выполнения
Шестиугольник (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()
Результат выполнения
Восьмиугольник (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()
Результат выполнения
Мини-проект: студия автоматических многоугольников
★★ Самостоятельная задача
Студия многоугольников
Оформите программу выше так, чтобы storony запрашивалось у пользователя через input() (не забудьте int()). Проверьте на нескольких значениях — включая большие, вроде 30 или 50, — и посмотрите, во что превращается фигура.
Практика: студия автоматических многоугольников
Модуль turtle открывает нативное окно Python — выполните локально в VS Code, PyCharm или Jupyter
Практика выполняется локально