Здравствуйте. В этой статье продолжим разбирать функции и возможности графической библиотеки «Черепашка» в языке Python. Предыдущие статьи на эту тему можно почитать по ссылкам:
Сегодня рассмотрим, как нарисовать звезду. Создадим функцию «star», которая будет принимать количество вершин нашей звезды и второй аргумент это размер нашей звезды. Для того чтобы определить угол вершины нашей звезды воспользуемся формулой.
Количество вершин делим нацело на 2, умножаем на 360 градусов и делим на количество вершин. Данная формула работает только с нечетным количеством вершин. Поэтому сделаем проверку на четность вершин, и если нечетное количество, рисуем звезду. А если четное прибавляем один к количеству вершин и вызываем нашу функцию, которая рисует звезду. Вот как все получается.
Вызовем нашу функцию и передадим ей (7, 150) и (10, 100).
В первом случае звезда семиконечная, а во втором одинадцатиконечная, все как мы и планировали.
В этой коротенькой статье разобрали, как рисовать различные звезды, в следующей статье нарисуем звездное небо.
Как нарисовать звездное небо turtle | Программирование на Python
Источник: dzen.ru
Русские Блоги
Библиотека Python turtle (рисование пятиконечных звезд и фрактальных деревьев)
Для подробного ознакомления с библиотекой черепах см. Короткую книгу:https://www.jianshu.com/p/e7beda76c622
Простой процесс рисования пятиконечной звезды является базовой операцией. На основе этой базовой операции можно добавлять различные программы для реализации различных функций.
1.0 Простая пятиконечная звезда:
Сначала вызовите библиотеку turtle, чтобы создать основную функцию. Эта основная функция используется для рисования пятиконечной звезды, и, наконец, вызывается основная функция. Для рисования пятиконечной звезды требуется 5 штрихов, и для каждого рисунка требуется поворот на 144 градуса. Установите длину стороны пятиконечной звезды равной 144. На самом деле это очень простой процесс: чтобы задать угол поворота и длину чертежа, достаточно вызвать цикл.
import turtle def main(): count=1 while count
2.0 Нарисуйте треугольники с разной длиной стороны:
На основе рисунка простой пятиконечной звезды сделайте петлю, и петлю, когда будет нарисована каждая пятиконечная звезда. Длина стороны пятиконечной звезды будет меняться каждый раз при повторении цикла.Размер — это параметр в функции рисования пятиконечной звезды. turtle.pensize (2) turtle.pencolor («красный») может установить ширину и цвет пера.
import turtle def draw_tagram(size): count = 1 while count
3.0 Используйте рекурсию для рисования треугольников:
Функции 2.0 и 3.0 одинаковы, но реализация отличается. 3.0 проще, чем 2.0, и процесс рисования пятиконечной звезды в каждом цикле реализуется рекурсией, что значительно сокращает написание кода.
Как нарисовать звезду turtle | Программирование на Python
import turtle def inter_draw(size): count=1 while count
4.0 Нарисуйте фрактальное дерево:
Рисование фрактального дерева — это приложение рекурсивной функции. Каждая рекурсия идет вперед, поверните на 20 градусов вправо, а затем вперед, затем поверните налево на 40 градусов, а затем вперед и, наконец, вернитесь в начальную точку ветви, но ветка становится короче по мере продвижения к вершине. Кроме того, если начальная точка находится не в центре холста, вы также можете сначала переместить начальное положение кисти:
turtle.penup() turtle.backward(120) turtle.pendown()
import turtle def draw_tree(branch_length): if branch_length>5: turtle.forward(branch_length) ### print (‘вперед’, длина_ветки) turtle.right(20) ### print (‘Поверните направо 20’) draw_tree(branch_length-15) ### print (‘вперед’, branch_length-15) turtle.left(40) ### print (‘Поверните налево на 40’) draw_tree(branch_length — 15) ### print (‘вперед’, branch_length-15) turtle.right(20) ### print (‘Поверните направо 20’) turtle.backward(branch_length) def main(): turtle.pencolor(‘red’) turtle.left(90) turtle.penup() turtle.backward(120) turtle.pendown() draw_tree(100) turtle.exitonclick() if __name__==»__main__»: main()
Источник: russianblogs.com
Как нарисовать 11-ти конечную звезду на turtle? Python [закрыт]
Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме.
Закрыт 1 год назад .
Нужно нарисовать следующую 11-ти конечную звезду на turtle : Помогите, пожалуйста
Отслеживать
1,902 2 2 золотых знака 7 7 серебряных знаков 26 26 бронзовых знаков
задан 9 дек 2021 в 17:23
gsrifjdtuet gsrifjdtuet
1 1 1 серебряный знак 5 5 бронзовых знаков
9 дек 2021 в 18:34
Помог ответ?
Поставьте галочку 🙂
9 дек 2021 в 18:37
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Помогаю — нужно ехать прямо нужную длину. Потом повернуть на такой угол, чтобы получилась 11 конечная звезда.
Повторить 11 раз
А этот угол — 180-180/11 градусов (черепашка же в градусах работает?)
Отслеживать
ответ дан 9 дек 2021 в 17:47
48.7k 1 1 золотой знак 17 17 серебряных знаков 40 40 бронзовых знаков
from turtle import * t = Turtle() for i in range(11): t.right(10) t.fd(80) t.left(160) t.fd(100)
Но немного кривенькая. Вот скриншот:
from turtle import * t = Turtle() for i in range(11): t.right(180-180/11) t.fd(200)
Вот так получится:
Отслеживать
ответ дан 9 дек 2021 в 18:01
1,902 2 2 золотых знака 7 7 серебряных знаков 26 26 бронзовых знаков
Кривая звезда какая-то. :))
9 дек 2021 в 18:05
Можно подправить немного величину в t.right(10)
9 дек 2021 в 18:06
Так всё же проще делается: from turtle import * t = Turtle() for i in range(11): t.right(180-180/11) t.fd(200) done()
9 дек 2021 в 18:07
9 дек 2021 в 18:14
можно в лоб замутить:
import turtle import math # вычислить координаты radius = 100 center_x = 0 center_y = 0 points_count = 21 points = [(center_x + radius * math.cos(2 * math.pi * i / points_count), center_y + radius * math.sin(2 * math.pi * i / points_count)) for i in range(points_count)] # построить изображение turtle.penup() turtle.goto(points[0]) turtle.pendown() index = 0 while True: index += points_count // 2 index = index % points_count turtle.setpos(points[index]) if index == 0: break turtle.done()
Отслеживать
ответ дан 9 дек 2021 в 17:54
37k 4 4 золотых знака 25 25 серебряных знаков 67 67 бронзовых знаков
Ничего себе «в лоб». И это вместо, по сути, одного цикла состоящего из пары команд. 🙂
9 дек 2021 в 18:09
сделайте скидку человеку, знакомство которого с черепахой составило 2 минуты :'(.
9 дек 2021 в 18:10
Вот-вот. Хорошо, что ещё какой-нибудь numpy не был задействован, или что-то вроде того. ))
9 дек 2021 в 18:12
кстати используя matplotlib суммарно строчки в 3-4 можно было бы уложиться 🙂
9 дек 2021 в 18:17
9 дек 2021 в 18:31
- python
- графика
- turtle
-
Важное на Мете
Похожие
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Источник: ru.stackoverflow.com