Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 26, 2020 21:24:12

Dlubochanin
Зарегистрирован: 2020-02-26
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите совсем новичку

Черепаха и вписанные многоугольники.

  import turtle
import math
def nugolnik(x):
    for i in range(x):
        sin=math.pi/x
        shag=10*x*2*math.sin(sin)
        s=180*(x-2)
        turtle.left(180-s/x)
        turtle.forward(shag)
def otstup(t):
    turtle.penup()
    turtle.forward(10)
    turtle.pendown()
turtle.shape('turtle')
b=3
while b<=20:
    s=180*(b-2)
    turtle.left((s/b)/2)
    nugolnik(b)
    turtle.right((s/b)/2)
    otstup(b)  
    b+=1
turtle._root.mainloop()

Отредактировано Dlubochanin (Фев. 26, 2020 21:27:37)

Офлайн

#2 Апрель 6, 2020 09:41:39

Romanteg
Зарегистрирован: 2020-03-09
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите совсем новичку

rami
перед рисованием сторон нужно развернуть “черепашку” на половину внутреннего угла между сторонами (у треугольника 3 угла по 60° — разворачиваем на 30°, у квадрата 4 угла по 90° — разворачиваем на 45°, и т.д., это нужно посчитать), после завершения фигуры разворачиваем “черепашку” обратно на этот угол.
Привет.
У меня здесь была проблема.
Т.е. каким-то образом я сообразил, что нужно ее поворачивать перед рисованием следующей фигуры на определенное количество градусов в одну и в другую сторону.
Но как найти этот угол вообще не понимал, пробовал подставлять числа.
Треугольник и квадрат нормально рисовались, а дальше шло со смещением… воспользовался формулой (180-360/n)/2. Правда почему надо поворачивать на половину внутреннего угла … непонятно …
Добавил ее в угол поворота и вроде бы заработало… вот мое решение:

Упражнение №9: правильные многоугольники
 import turtle
import math
n = 3
z = 0
a = 360 / n
line = 50
def triangles():
    turtle.shape("turtle")
    turtle.pendown()
    turtle.left(a)
    turtle.forward(line)
def move():
    turtle.penup()
    turtle.goto(z,0)
for c in range(10):
    turtle.left((180-360/n)/2)
    for c in range(n):
        triangles()
    turtle.right((180-360/n)/2)
    n += 1
    z += 15
    line += 5
    a = 360 / n
    move()

Отредактировано Romanteg (Апрель 6, 2020 09:47:44)

Офлайн

#3 Авг. 1, 2021 21:07:33

televizor1945
Зарегистрирован: 2021-08-01
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите совсем новичку

white
А кто подскажет как шестое упражнение сделать? Вообще идей нету)
Просто нужно посмотреть, какой шаг у архимедовой спирали: он равен 2 * pi
Затем посмотреть какой угол поворота: википедия выдаёт 1 радиан (примерно 57 градусов)
И я так полагаю, что все данные найдены)

m=2 * pi
while m < 200:
turtle.circle(m, 57);
m+= 2 * pi

Офлайн

#4 Авг. 24, 2021 01:38:00

Ilyxa1998
Зарегистрирован: 2021-08-24
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите совсем новичку

Ух, конечно и задача
Тоже промаялся с ней 4 дня)
Сначала писал вместо np.sin(np.pi/n) np.sin(180/n) и понятно, что ничего не получалось, радиус вообще отрицательный был) Потом еще долго маялся с углами, пока не нарисовал рисунок и осознал, что угол не 180/2n, а есть специальная формула в зависимости от фигуры. В итоге всё таки написал требуемую функцию, вроде работает)

 import turtle
import numpy as np
turtle.shape('arrow')
turtle.speed(1)
def right_figure(n):
    a = 30
    R = n*a/(2*np.sin(np.pi/n))
    R_1 = (n+1)*a/(2*np.sin(np.pi/(n+1)))
    turtle.color('red')
    turtle.left(180*(n-2)/(2*n) )
    for i in range(n):
        turtle.left(360/n)
        turtle.forward(a*n)
    turtle.penup()
    turtle.right(180*(n-2)/(2*n))
    turtle.forward(R_1 - R)
    turtle.pendown()
for n in range(3,10):
    right_figure(n)

Отредактировано Ilyxa1998 (Авг. 24, 2021 01:42:29)

Офлайн

#5 Март 2, 2022 09:13:03

UserizPosada
Зарегистрирован: 2022-03-02
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите совсем новичку

у меня вот как получилось решить задачу о 10 вложенных квадратах

 import turtle
t = turtle.Turtle()
t.shape('turtle')
t.speed(10)
x = 10
for z in range(10):
    for i in range(4):      
        t.forward(x)
        t.left(90)
    t.penup()
    t.backward(5)
    t.right(90)
    t.forward(5)
    t.left(90)
    t.pendown()
    x += 10

Отредактировано UserizPosada (Март 2, 2022 09:14:48)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version