Никак не могу запустить turtle

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

import turtle as t
def rectangle(horizontal, vertical, color):
    t.pendown()
    t.pensize(l)
    t.color(red)
    t.begin_fill()
    for counter in range(l, 3):
        t.forward()
        t.right(90)
        t.forward()
        t.right(90)
    t.shape('turtle')
    t.setheading(0)
    t.forward(80)
    t.penap()
    t.speed('slow')
    t.bgcolor('Doodger blue')
    t.end_fill()
    t.penup()
#ступни
t.goto(-100, -150)
rectangle(50, 20, 'blue')
t.goto(-30, -150)
rectangle(50, 20, 'blue')
#ноги
t.goto(-25, -50)
rectangle(15, 100, 'grey')
t.goto(-55, -50)
rectangle(-15, 100, 'grey')

t.exitonclick()

Ответы (2 шт):

Автор решения: MBo

Убрал необъявленные переменные, добавил использование нужных, ещё что-то.

Старайтесь добиваться от ребёнка, чтобы понимал каждое действие. Например, было откуда-то скопировано t.pensize(l), а переменной l у вас вовсе нет. Или t.forward() - означает двигаться вперед на длину, указанную в скобках, а в скобках ничего не указано.

Спросите, почему я вставил t.penup() перед каждым goto ?
Почему переписал цикл рисования прямоугольника таким образом?

Сделайте сами небольшое исправление, чтобы прямоугольники рисовались цветом color, указанным при вызове функции, а не красным.

И пишите программу по небольшим частям.

import turtle as t

def rectangle(horizontal, vertical, color):
    t.pendown()
    t.pensize(1)
    t.color("red")
    t.begin_fill()
    t.shape('turtle')
    t.setheading(0)
    t.speed('slow')
    for counter in range(2):
        t.forward(horizontal)
        t.right(90)
        t.forward(vertical)
        t.right(90)
    t.end_fill()
    t.penup()

#ступни
t.bgcolor('light blue')
t.penup()
t.goto(-100, -150)
rectangle(50, 20, 'blue')
t.penup()
t.goto(-30, -150)
rectangle(50, 20, 'blue')
#ноги
t.penup()
t.goto(-25, -50)
rectangle(15, 100, 'grey')
t.penup()
t.goto(-55, -50)
rectangle(-15, 100, 'grey')
t.shape('classic')
t.goto(0, 0)
t.exitonclick()

введите сюда описание изображения

→ Ссылка
Автор решения: MarianD

Главными ошибками у вас являются:

  • Применение буквы l (строчное L) вместо числа 1 (один) и наоборот. Да, они выглядят одинаково, но для компьютера они являются совсем разными символами.
    (Строки 4 и 7 вашего кода.)

  • Отсутствие апострофов там, где вы хотите задать буквальный текст (red вместо правильного 'red').
    (Строка 5 вашего кода.)

  • Отсутствие параметра (т.е. уточнения действия в скобках за его именем) там, где это уточнение строго требуется (t.forward() - нужно задать длину перемещения, например t.forward(8) или t.forward(horizontal)).
    (Строки 8 и 10 вашего кода.)

  • Опечатки (компьютер — в отличие от человека — опечатки не понимает) (penap вместо правильного penup — да, оно произносится как «penap» — и 'Doodger blue' вместо правильного 'Dodgerblue', с одним o и без пробела — да, правильно по-английски с пробелом, но имина цветов для компьютера пишутся всегда как одно слово, без пробелов).
    (Строки 15 и 17 вашего кода.)

→ Ссылка