Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3511011
А
Аноним
21 ноября 2025 11:40 · публичный вопрос
А
Аноним

from turtle import * penup() goto(-200, 0) pendown() goto(200, 0) penup() goto(0, -200) pendown() goto(0, 200) exitonclick() исправь код чтоб у коррдинатной были стрелки на концах

Ответ нейросети
21 ноября 2025 11:40

Классно! Чтобы у осей были стрелки на концах, добавим функцию, которая рисует треугольник-стрелку на конце линии, ориентированный вдоль направления линии. Затем применим её к обоим концам осей.

Что сделано:

  • добавлена функция draw_arrowhead(x1, y1, x2, y2, head_length, head_angle_deg), которая рассчитывает направление линии, строит треугольник стрелки и заполняет его.
  • после рисования осей вызываем эту функцию для обоих концов горизонтальной и вертикальной осей.
  • код остаётся простым и понятным, подходит для школьной задачи.

Пример кода:

from turtle import * import math

def draw_arrowhead(x1, y1, x2, y2, head_length=20, head_angle_deg=30, color="black"): dx = x2 - x1 dy = y2 - y1 L = math.hypot(dx, dy) if L == 0: return ux, uy = dx / L, dy / L # единичный вектор вдоль линии nx, ny = -uy, ux # нормаль к линии

head_angle = math.radians(head_angle_deg)
head_width = head_length * math.tan(head_angle)

# две точки основания стрелки
base1 = (x2 - head_length * ux + head_width * nx,
         y2 - head_length * uy + head_width * ny)
base2 = (x2 - head_length * ux - head_width * nx,
         y2 - head_length * uy - head_width * ny)

penup()
goto(x2, y2)
pendown()
color(color)
fillcolor(color)
begin_fill()
goto(base1)
goto(base2)
goto(x2, y2)
end_fill()

def main(): speed(0) hideturtle()

# горизонтальная ось
penup()
goto(-200, 0)
pendown()
goto(200, 0)

# стрелки на концах горизонтальной оси
draw_arrowhead(-200, 0, 200, 0, head_length=20, head_angle_deg=25)
draw_arrowhead(200, 0, -200, 0, head_length=20, head_angle_deg=25)

# вертикальная ось
penup()
goto(0, -200)
pendown()
goto(0, 200)

# стрелки на концах вертикальной оси
draw_arrowhead(0, -200, 0, 200, head_length=20, head_angle_deg=25)
draw_arrowhead(0, 200, 0, -200, head_length=20, head_angle_deg=25)

exitonclick()

if name == "main": main()

Кратко как работает:

  • оси рисуются обычными линиями от (-200,0) до (200,0) и от (0,-200) до (0,200).
  • стрелки добавляются двумя вызовами draw_arrowhead: для каждого конца линии указывается начальная точка x1,y1 и конечная точка x2,y2, чтобы стрелка смотрела наружу от центра оси.
  • параметры head_length и head_angle_deg можно подстроить под желаемый размер стрелки. Если нужно стрелок только на одном конце, оставь вызовы только для нужных концов.