Никак не могу запустить 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 шт):
Убрал необъявленные переменные, добавил использование нужных, ещё что-то.
Старайтесь добиваться от ребёнка, чтобы понимал каждое действие. Например, было откуда-то скопировано 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()
Главными ошибками у вас являются:
Применение буквы
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 вашего кода.)
