Архив рубрики ~Лента новостей~

Рисование фигур с помощью модуля Python Turtle

Рисование фигур с помощью модуля Python Turtle

Пошаговое руководство, посвященное изучению модуля Python Turtle.

Делиться

NOVOSTI

Начинающим пользователям Python достаточно знать, что они могут программировать функции, вводить итерации с помощью циклов и определять, какую программу выполнить, используя условные операторы, такие как if, elif и else. Но Python гораздо мощнее: он может получать доступ к файлам и обрабатывать их, создавать интересные игры, моделировать научные концепты, обрабатывать большие данные, генерировать модели машинного обучения и многое другое!

В этой статье мы будем использовать Python для создания графических результатов с помощью модуля Turtle. Это руководство для начинающих, которое научит вас рисовать фигуры и программировать рисование с помощью Python. Для дальнейшего изучения необходимо иметь глубокое понимание основ Python: базовых операторов, циклов, классов и объектов, а также доступа к модулям.

Модуль Turtle в Python

Модуль turtle в Python позволяет создавать графические изображения с помощью кода. Модуль предоставляет указатель, который можно настроить как черепашку (отсюда и название), а движение черепашки оставляет за собой след, рисуя фигуры и создавая визуальные узоры на экране. Модуль устанавливается вместе со стандартной библиотекой Python, а это значит, что нам не нужно устанавливать его самостоятельно. Доступ к его классам и функциям можно легко получить с помощью следующего оператора импорта:

из импорта черепахи *

Теперь давайте углубимся в изучение этого модуля, используя официальную документацию Python: https://docs.python.org/3/library/turtle.html

Основные команды черепашки

Как видно из приведенной выше документации, основные команды, которые мы можем отдавать нашей черепахе, следующие:

  • Функция forward() указывает черепахе, на какое расстояние ей нужно переместиться вперед. В качестве аргумента она принимает целочисленное значение.
  • Функция backward() указывает черепахе, на какое расстояние ей нужно переместиться назад. Она также принимает в качестве аргумента целочисленное значение.
  • Функция `left()` указывает черепахе повернуться влево на определенный угол, который был передан функции в качестве аргумента.
  • Функция right() указывает черепахе повернуться вправо на определенный угол, который был передан функции в качестве аргумента.
  • Функция color() изменяет цвет черепашки в соответствии со строкой, переданной в качестве аргумента (например, «pink»). Здесь можно получить доступ к названиям цветов.
  • Функция `width()` изменит ширину указателя на заданное целое число.
  • Функция exitonclick() позволит нам закрыть экран, сгенерированный нашим кодом, простым щелчком мыши.

Запустите следующий код и измените его в соответствии с вашими потребностями, чтобы понять, что делает черепаха при вызове каждой из вышеуказанных функций.

from turtle import * color(«pink») width(5) forward(100) left(45) color(«blue») width(4) forward(100) left(45) forward(20) color(«red») width(4) forward(60) left(45) backward(50) color(«yellow») width() forward(100) right(45) exitonclick()

Использование объектно-ориентированной черепашьей графики

Теперь, когда мы рассмотрели, как работают основные функции модуля и как генерируется вывод, мы воспользуемся концепцией объектно-ориентированного программирования, описанной в документации, чтобы углубить наше понимание. Концепция классов и объектов, создаваемых с помощью конструктора, упрощает программирование сложных программ с переменными, имеющими схожие параметры, но разные значения. Именно здесь ООП оказывается полезным, и его использование в модуле позволит нам использовать более одной черепашки одновременно.

Для дальнейшего продвижения важно иметь базовое понимание классов и объектов, в частности, как создаются объекты с их атрибутами и методами.

Давайте создадим объекты «черепаха» и «экран»:

from turtle import Turtle, Screen my_turtle = Turtle() print(my_turtle)

Как видно на скриншоте выше, объект черепахи создан, и его местоположение определено. Теперь мы воспользуемся документацией для настройки нашей черепахи.

Мы определим форму, цвет и ширину нашей черепахи, используя следующий код:

my_turtle.shape(«turtle») my_turtle.color(«coral1») my_turtle.width(4)

Давайте также определим объект экрана и настроим его.

screen = Screen() screen.title('Рисование фигур с помощью модуля Turtle') screen.bgcolor(«white») screen.exitonclick()

Объект экрана был определен выше, и его заголовок и цвет фона были установлены соответствующим образом. Теперь перейдем к главной цели этого урока!

Рисование фигур

Теперь мы научимся рисовать разные фигуры с помощью нашей специально созданной черепашки!

Треугольник

Первой фигурой, которую мы нарисуем, будет треугольник. Его можно нарисовать, используя основные функции, которые мы обсуждали выше: forward и right. Мы знаем, что треугольник состоит из 3 сторон, и для равностороннего треугольника угол между каждой стороной равен 60 градусам. Мы можем нарисовать этот треугольник, используя следующие строки кода:

my_turtle.forward(200) my_turtle.right(120) my_turtle.forward(200) my_turtle.right(120) my_turtle.forward(200) my_turtle.right(120)

Как видите, мы успешно создали треугольник с помощью нашей черепахи. Обратите внимание, что мы установили угол, на который черепаха двигается вправо, равным 120, то есть оставшийся угол, который станет внутренним углом треугольника, будет равен 180 – 120 = 60. Это и было нашей целью. Мы будем работать аналогично для следующей фигуры.

Квадрат

Теперь мы с помощью нашей черепашки нарисуем квадрат. Поскольку у квадрата 4 стороны, мы будем использовать метод движения вперед 4 раза, устанавливая угол равным 360/4 = 90º всякий раз, когда используем правильный метод. Давайте также изменим цвет черепашки на темно-бирюзовый (Цвета черепашки).

Вот наш код для рисования квадрата:

my_turtle.color(«темно-бирюзовый») my_turtle.forward(200) my_turtle.right(90) my_turtle.forward(200) my_turtle.right(90) my_turtle.forward(200) my_turtle.right(90) my_turtle.forward(200) my_turtle.right(90)

Пентагон

Далее мы создадим пятиугольник, пятиугольную фигуру, у которой угол между сторонами равен 108 градусам. Это означает, что внешний угол будет равен 72 градусам. Мы внесем это в наш код, на этот раз используя 5 строк кода для 5 сторон. Мы также изменим цвет нашей черепахи.

my_turtle.color(«весенний зеленый») my_turtle.forward(150) my_turtle.right(72) my_turtle.forward(150) my_turtle.right(72) my_turtle.forward(150) my_turtle.right(72) my_turtle.forward(150) my_turtle.right(72) my_turtle.forward(150) my_turtle.right(72)

Как видно из приведенного выше блока кода, мы уменьшили скорость перемещения вперед с 200 до 150, чтобы пятиугольник можно было нарисовать в пределах экрана.

Создание алгоритма

Мы использовали модуль turtle для рисования треугольника, квадрата и пятиугольника. Как видно из приведенного выше примера, легко заметить закономерность. Черепашка движется вперед и вправо столько раз, сколько сторон у фигуры. Для рисования треугольника, то есть трехсторонней фигуры, черепашка движется вперед, затем вправо, затем снова вперед, затем вправо, затем снова вперед и снова вправо — всего 3 подхода движения вперед и вправо. Для квадрата тот же подход выполняется четыре раза, то есть столько раз, сколько сторон у фигуры. Аналогично и для пятиугольника. Таким образом, можно установить закономерность повторяющихся функций движения вперед и вправо. Можно задать фиксированное значение пройденного расстояния при каждом движении черепашки вперед. Что касается угла, заданного методом right, то, как и количество повторений операторов зависит от количества сторон фигуры, так и сам угол определяется количеством сторон. Этот внешний угол легко вычислить по следующей формуле:

Внешний угол = 360 / Количество сторон

Внешний угол треугольника будет равен 360/3 = 120. Внешний угол квадрата будет равен 360/4 = 90, и так далее. Это будет использоваться для ввода данных в правильный метод.

Определение функции

Теперь определим универсальную функцию, которая принимает количество сторон фигуры для её отрисовки. Если мы передадим в качестве аргумента 3, она создаст треугольник. Если мы передадим в качестве аргумента 8, она создаст восьмиугольник и так далее.

def draw_shapes(num_sides): angle = 360 / num_sides for i in range(num_sides): my_turtle.forward(50) my_turtle.right(angle)

Функция принимает количество сторон, вычисляет внешний угол, который передается в метод `right`, и выполняет методы `forward` и `right` столько раз, сколько сторон. Так, предположим, мы хотим нарисовать восьмиугольник, мы вызовем функцию и передадим ей число 8 в качестве аргумента. Мы также можем определить цвет фигуры:

my_turtle.color(«бледно-фиолетово-красный») draw_shapes(8)

Рисование фигур в заданном диапазоне

Теперь мы воспользуемся определенной выше функцией и циклом for для перебора диапазона чисел, каждое из которых соответствует стороне. Начнем с 3 для треугольника, и наша черепашка нарисует столько фигур, сколько мы захотим. Допустим, мы хотим нарисовать треугольник, квадрат, пятиугольник и так далее до десятиугольника, мы будем перебирать числа от 3 до 11, поскольку 11 исключено из диапазона цикла for.

Добавим также возможность рисовать каждую фигуру разным цветом. Для этого создадим список цветов, и цикл for будет перебирать цвета из этого списка.

my_colors = [«темно-серый», «ярко-розовый», «полуночно-синий», «оранжевый», «индиго», «темно-морской зеленый», «бежевый», «бледно-фиолетово-красный», «небесно-голубой», «весенний зеленый»]

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

def draw_shapes(num_sides): angle = 360 / num_sides my_turtle.color(my_colors[3-num_sides]) for i in range(num_sides): my_turtle.forward(75) my_turtle.right(angle) for shape_size_n in range(3,11): draw_shapes(shape_size_n)

Заключение

В этом уроке мы изучили модуль Turtle, поняли его основные функции и концепцию ООП, а также использовали его для создания фигур. Это был урок по Python среднего уровня, требующий базового понимания классов и объектов, определения и вызова функций, а также настройки цветов с помощью Trinket. Это базовый пример того, что можно сделать с модулем Turtle. Мы можем изучить модуль подробнее и многому научиться в программировании с его помощью!

Источник: towardsdatascience.com

Оцените материал:

Поделиться
Понравилась статья? Расскажите другим
ВКонтакте
Читайте также
Новости робототехники Датчики давления могут повысить точность захвата роботов. Новости робототехники Компания Poseidon Aerospace привлекла 60 миллионов долларов перед первым испытательным полетом без пилота. Архив рубрики ~Коротко из Telegram~ Телевизоры LG могут следить за тем, что происходит у вас… Архив рубрики ~Коротко из Telegram~ Крошечная open‑source‑модель MiniCPM5-2B обошла конкурентов до 4B параметров ⚡ Канал… Архив рубрики ~Коротко из Telegram~ Бесплатная обработка голоса в аудио Если записываешь голос на встроенный… Архив рубрики ~Обо всем~ Конец универсального диагноза болезни Паркинсона: почему 2026 год станет годом, когда неврология перейдет на высокоточное исследование. Архив рубрики ~Коротко из Telegram~ Дата-центр Stargate в Абилине назвали «местом рождения AGI» Глава Crusoe… Архив рубрики ~Коротко из Telegram~ Небольшой дайджест — коротко о найденных новостях 1️⃣ Российский облачный… Архив рубрики ~Коротко из Telegram~ Офлайн-ИИ на вашем телефоне В новых айфонах и топовых Android-флагманах… Архив рубрики ~Коротко из Telegram~ Почему видео от нейросети выглядит «мёртво» — и как это… Архив рубрики ~Коротко из Telegram~ #слухи Apple корректирует планы по выпуску новых моделей MacBook с… Архив рубрики ~Обо всем~ Как вырастить один кристалл размером с ладонь и повесить на него десять тонн Архив рубрики ~Коротко из Telegram~ Инструмент полезен настолько, насколько вы знаете что он умеет. Разбираем… Новости робототехники MassRobotics рассматривает опрос участников по ограничениям FCC Новости робототехники Датчики давления могут повысить точность захвата роботов. Новости робототехники Компания Poseidon Aerospace привлекла 60 миллионов долларов перед первым испытательным полетом без пилота. Архив рубрики ~Коротко из Telegram~ Телевизоры LG могут следить за тем, что происходит у вас… Архив рубрики ~Коротко из Telegram~ Крошечная open‑source‑модель MiniCPM5-2B обошла конкурентов до 4B параметров ⚡ Канал… Архив рубрики ~Коротко из Telegram~ Бесплатная обработка голоса в аудио Если записываешь голос на встроенный… Архив рубрики ~Обо всем~ Конец универсального диагноза болезни Паркинсона: почему 2026 год станет годом, когда неврология перейдет на высокоточное исследование. Архив рубрики ~Коротко из Telegram~ Дата-центр Stargate в Абилине назвали «местом рождения AGI» Глава Crusoe… Архив рубрики ~Коротко из Telegram~ Небольшой дайджест — коротко о найденных новостях 1️⃣ Российский облачный… Архив рубрики ~Коротко из Telegram~ Офлайн-ИИ на вашем телефоне В новых айфонах и топовых Android-флагманах… Архив рубрики ~Коротко из Telegram~ Почему видео от нейросети выглядит «мёртво» — и как это… Архив рубрики ~Коротко из Telegram~ #слухи Apple корректирует планы по выпуску новых моделей MacBook с… Архив рубрики ~Обо всем~ Как вырастить один кристалл размером с ладонь и повесить на него десять тонн Архив рубрики ~Коротко из Telegram~ Инструмент полезен настолько, насколько вы знаете что он умеет. Разбираем… Новости робототехники MassRobotics рассматривает опрос участников по ограничениям FCC