Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Пытаюсь нарисовать фигуры по заданию с помощью модуля turtle в python, но не получается

бармалей п Ученик (102), открыт 2 дня назад
вот задание:
Черепахе был дан для исполнения следующий алгоритм:
Повтори 6 [Вперёд 24 Направо 90 Вперёд 30 Направо 90]
Поднять хвост
Вперёд 2 Направо 90 Вперёд 10 Налево 90
Опустить хвост
Повтори 6 [Вперёд 75 Направо 90 Вперёд 71 Направо 90]
Определите, сколько точек с целочисленными координатами будут находиться внутри объединения фигур, ограниченных заданными алгоритмом линиями, включая точки на границах этого объединения.
вот мой код:

 from turtle import * 
tracer(0)
left(90)
m = 20
pendown()
for i in range(6):
forward(24*m)
right(90)
forward(30*m)
right(90)
penup()
forward(2*m)
right(90)
forward(10*m)
left(90)
pendown()
for i in range(6):
forward(75*m)
right(90)
forward(71*m)
right(90)
for x in range(-45,45):
for y in range(-30,30):
goto(x*m,y*m)
dot(3)
done()
а вот что получается:

что я не так сделал, что рисунок получается таким?
1 ответ
абаюдна абаюднавеч Профи (741) 2 дня назад
Параметры tracer(0) и update(): Вы используете tracer(0), что отключает автоматическое обновление экрана. Если вы хотите видеть результат, вам нужно будет вручную обновить экран с помощью update().

Положение черепахи: Убедитесь, что черепаха начинает рисовать с правильной позиции. Вы можете использовать penup() и goto() для перемещения черепахи в нужное место перед началом рисования.

Целочисленные координаты: Чтобы определить количество точек с целочисленными координатами внутри фигур, вам нужно будет использовать более точные границы.

Исправленный код:
from turtle import *

# Настройка
tracer(0) # Отключаем автоматическое обновление экрана
m = 20

# Начинаем рисовать первую фигуру
penup()
goto(-24*m, -30*m) # Перемещаем черепаху в начальную позицию
pendown()

# Рисуем первую фигуру
for i in range(6):
forward(24*m)
right(90)
forward(30*m)
right(90)

# Поднимаем хвост
penup()
forward(2*m)
right(90)
forward(10*m)
left(90)
pendown()

# Рисуем вторую фигуру
for i in range(6):
forward(75*m)
right(90)
forward(71*m)
right(90)

# Обновляем экран
update()

# Подсчет точек с целочисленными координатами
count = 0
for x in range(-45*m, 45*m + 1, m): # Увеличиваем шаг до m
for y in range(-30*m, 30*m + 1, m):
goto(x, y)
if x >= -24*m and x <= 0 and y >= -30*m and y <= 0: # Проверка первой фигуры
count += 1
elif x >= 0 and x <= 75*m and y >= 0 and y <= 71*m: # Проверка второй фигуры
count += 1

print("Количество точек с целочисленными координатами:", count)

done()

Перемещение в начальную позицию: Я добавил goto(-24*m, -30*m), чтобы черепаха начинала рисовать с правильной позиции.

Обновление экрана: Я добавил update() после рисования фигур, чтобы увидеть результат.

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

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