Перейти к содержимому

Как нарисовать звезду в python turtle

  • автор:

Как нарисовать звезду в python turtle

3. Как нарисовать звезду turtle

4. Как нарисовать звездное небо turtle

5. Расставляем звезды на небе turtle

6. Обработка событий нажатия на клавиатуру turtle

7. Рисуем олимпийские кольца Turtle

8. Как задать случайный цвет в turtle

9. Прыгающий мячик Bounce ball

10. Много прыгающих мячиков

11. Мяч и сила притяжения

Как нарисовать 11-ти конечную звезду на turtle? Python [закрыт]

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме.

Закрыт 2 года назад .

Звезда

Нужно нарисовать следующую 11-ти конечную звезду на turtle : Помогите, пожалуйста

Отслеживать
3,149 2 2 золотых знака 11 11 серебряных знаков 36 36 бронзовых знаков
задан 9 дек 2021 в 17:23
gsrifjdtuet gsrifjdtuet
1 1 1 золотой знак 1 1 серебряный знак 5 5 бронзовых знаков
@ПИТОНИСТ версия-3-8, спасибо, теперь понимаю какую информацию нужно указывать в вопросах��
9 дек 2021 в 18:34
Помог ответ? Поставьте галочку 🙂
9 дек 2021 в 18:37

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

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

Повторить 11 раз

А этот угол — 180-180/11 градусов (черепашка же в градусах работает?)

Отслеживать
ответ дан 9 дек 2021 в 17:47
52.7k 3 3 золотых знака 19 19 серебряных знаков 43 43 бронзовых знака

from turtle import * t = Turtle() for i in range(11): t.right(10) t.fd(80) t.left(160) t.fd(100) 

Но немного кривенькая. Вот скриншот:

Скриншот

А лучше ещё так (спасибо @GrAnd):

from turtle import * t = Turtle() for i in range(11): t.right(180-180/11) t.fd(200) 

Вот так получится:

Cкриншот 2

Отслеживать
ответ дан 9 дек 2021 в 18:01
Çℏėτᶄắɤẵ Çℏėτɤᶉᶄắ Çℏėτᶄắɤẵ Çℏėτɤᶉᶄắ
3,149 2 2 золотых знака 11 11 серебряных знаков 36 36 бронзовых знаков
Кривая звезда какая-то. :))
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
@GrAnd спасибо)
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
37.4k 4 4 золотых знака 28 28 серебряных знаков 74 74 бронзовых знака
Ничего себе «в лоб». И это вместо, по сути, одного цикла состоящего из пары команд. 🙂
9 дек 2021 в 18:09
сделайте скидку человеку, знакомство которого с черепахой составило 2 минуты :'(.
9 дек 2021 в 18:10
Вот-вот. Хорошо, что ещё какой-нибудь numpy не был задействован, или что-то вроде того. ))
9 дек 2021 в 18:12
кстати используя matplotlib суммарно строчки в 3-4 можно было бы уложиться 🙂
9 дек 2021 в 18:17
@Zhihar и без них можно. 2 вариант ru.stackoverflow.com/a/1359135/468004
9 дек 2021 в 18:31

  • python
  • графика
  • turtle
    Важное на Мете
Похожие

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.17.3574

Python рисует звезду с n-указанием с помощью графики черепах

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

Отрисовать обычную звезду с n-угольными точками с боковой d — в функции с именем star(turtle, n, d)

Вот код, который у меня есть до сих пор:

def star(turtle, n, d): angle = (180-((180*(n-2))/n))*2 for i in range(n): t.forward(d) t.left(angle) return angle 

Проблема, с которой я сталкиваюсь, заключается в том, что моя функция может рисовать только звезды с нечетным количеством углов (5, 7, 9-сильные звезды). Когда я прошу ее нарисовать звезду с четным количеством сторон, она выводит многоугольник с боковыми n/2. Поэтому, если я прошу нарисовать 8-сильную звезду, она выводит квадрат, 6-сильная дает треугольник и так далее.

Я много раз пытался изменить формулу угла, но она никогда не работает с заданным n.

Спасибо за помощь!

Поделиться Источник 19 октября 2014 в 20:54

3 ответа

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

import sys import turtle from time import sleep def gcd(a, b): while b != 0: a, b = b, a % b return a def normal_star(size, color, points): if points ,<>)".format(points, coprime), file=sys.stderr) start = turtle.position() for _ in range(points): turtle.forward(size) turtle.left(360.0 / points * coprime) turtle.setposition(start) return abnormal_star(size, color, points) def abnormal_star(size, color, points): # deal with special cases here print("Exception:", points, file=sys.stderr) for points in range(5, 20): turtle.reset() normal_star(200, 'red', points) sleep(5) turtle.exitonclick() 

Для точек от 5 до 20 это не поможет найти решение для 6, которое вам нужно будет рассматривать как исключение, т.е. специализированный код или просто дать пользователю понять, что это исключение, с которым вы не можете справиться:

> python3 test.py (5,2) Exception: 6 (7,3) (8,3) (9,4) (10,3) (11,5) (12,5) (13,6) (14,5) (15,7) (16,7) (17,8) (18,7) (19,9) (20,9) > 

Пример вывода для аргументов 200,’red’,10

enter image description here

Поделиться 26 декабря 2016 в 19:17

Этот код будет рисуть звезду с любым количеством точек больше 5. Он принимает два аргумента: n — это количество вершин, а size контролирует размер шагов черепахи.

import turtle turtle.showturtle() turtle.shape("classic") def turtle_star(n, size = 100): extent = 360 / n if n % 2 == 0: coords = [] for a in range(0, n): turtle.penup() coords.append(turtle.pos()) turtle.circle(size, extent) for b in range(0, len(coords)): if b % 2 == 0: turtle.pendown() turtle.goto(coords[b][0], coords[b][1]) else: continue turtle.goto(coords[0][0], coords[0][1]) turtle.penup() for c in range(0, (len(coords) + 1)): if c % 2 != 0: turtle.goto(coords[c][0], coords[c][1]) turtle.pendown() else: continue turtle.goto(coords[1][0], coords[1][1]) else: angle = 180 - (180 / n) for a in range(n): turtle.forward(size) turtle.right(angle) 

turtle_star(11) (нечетко) и turtle(6) (через раз) показаны ниже:

enter image description here

enter image description here

Поделиться 09 июня 2019 в 03:25

Ваша формула немного неправильна:

def star(turtle, n, d): for i in range(n): angle = 180.0 - 180.0 / n turtle.forward(d) turtle.right(angle) turtle.forward(d)` 

Программирование на Python урок 1 рисуем звезду (ответвление звёздное небо. )

Иконка канала Персональный бот

В данном видео я расскажу вам как нарисовать звёздочку вот эта звезда: import turtle A = turtle.Turtle() A.speed(100) def star(n,dlina): if n%2!=0: for i in range (n): A.forward(dlina) angl = n//2*360/n A.left(angl) star (7,150) В следующем видео я покажу вам как закрасить эту звезду и нарисовать много звёзд. Мой вк: https://vk.com/id570378131 ставе лайки и подписывайтесь на канал. кому что непонятно пишите в личку я могу провести индивидуальный урок .

Показать больше

Войдите , чтобы оставлять комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Luxury Car Rental in Miami | Reserve a Premium Vehicle with RealCar