Вопрос задан 21.09.2026 в 11:27. Предмет Информатика. Спрашивает Зеленцов Егор.

Задача на Python: черепашьи гонки
Помогите дописать код

from turtle import *
from random import randint
from time import sleep

finish = 200
#разметка
def drawLines(t):
t.penup
t.color('light gray')
t.speed(100)
x = -200
y = 200
t.goto(x, y)
t.right(90)
t.pendown()
t.ht()
for i in range(20):
t.forward(400)
t.penup()
x += 20
t.goto(x, y)
t.pendown()
t.left(90)
t.ht()


#функция startRace(), размещает черепашку на линии старта и задаёт ей форму и цвет.
def startRace(t, x, y, color):
t = Turtle()
t.color(color)
t.speed(100)
t.shape('turtle')
t.penup()
t.goto(x, y)
t.pendown()




#создаём учасников гонки:
t1 = Turtle()
t2 = Turtle()

#начало гонки:
drawLines(t2)
startRace(t1, -200, -20, 'red')
startRace(t2, -200, 20, 'blue')

sleep(1)

while t1.xcor() < finish and t2.xcor() < finish:
t1.forward(randint(2,7))
t2.forward(randint(2,7))
sleep(1)






hideturtle()
exitonclick()




Перейти к ответам

Ответы на вопрос

Отвечает Борщ Саша.

Главная ошибка в твоём коде: в функции startRace создаётся новая черепашка, но она не возвращается наружу. Поэтому t1 и t2 остаются не теми черепашками, которые стоят на старте. Ещё нужно писать t.penup(), а не t.penup.

Исправленный вариант:

from turtle import *
from random import randint
from time import sleep

finish = 200

def drawLines(t):
    t.penup()
    t.color('light gray')
    t.speed(100)
    x = -200
    y = 200
    t.goto(x, y)
    t.right(90)
    t.pendown()
    t.hideturtle()
    for i in range(21):
        t.forward(400)
        t.penup()
        x += 20
        t.goto(x, y)
        t.pendown()

def startRace(x, y, color):
    t = Turtle()
    t.color(color)
    t.speed(100)
    t.shape('turtle')
    t.penup()
    t.goto(x, y)
    t.pendown()
    return t

lines = Turtle()
drawLines(lines)

t1 = startRace(-200, -20, 'red')
t2 = startRace(-200, 20, 'blue')

sleep(1)

while t1.xcor() < finish and t2.xcor() < finish:
    t1.forward(randint(2, 7))
    t2.forward(randint(2, 7))
    sleep(0.1)

if t1.xcor() >= finish and t2.xcor() >= finish:
    print('Ничья!')
elif t1.xcor() >= finish:
    print('Победила красная черепашка!')
else:
    print('Победила синяя черепашка!')

exitonclick()

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос