Перейти к основному содержимому

Таблица Scratch-Python


Переход с блоков на текст

С чего начать

Перед таблицей полезно пройти главу «Блоки» и поработать в мини-проектах Scratch. Синтаксис Python — в программе на Python. Рисование «как в Scratch, но текстом» — Turtle и глава Turtle. Промежуточный шаг с блоками и текстом одновременно — Edublocks.

Загрузка интерактивного демо…

Обязательный каркас Python

Любой перенос из Scratch начинается с того, что в Python нет жёлтого блока-события — код выполняется сверху вниз. Базовый шаблон:

# main.py — точка входа (аналог «когда щёлкнут по ⚑»)

def main():
# здесь логика, которая в Scratch висела на флаге
pass

if __name__ == "__main__":
main()

Для рисования на экране чаще подключают модуль turtle (см. примеры Turtle):

import turtle

t = turtle.Turtle()
# ... команды движения ...

turtle.done() # окно не закроется сразу

Стартовые пары «Scratch → Python»

Квадрат пером

когда щёлкнут по ⚑
опустить перо
повторить (4)
идти (100) шагов
повернуть ↻ на (90) градусов
конец
import turtle

t = turtle.Turtle()
t.pendown()

for _ in range(4):
t.forward(100)
t.left(90)

turtle.done()

Счётчик и условие

когда щёлкнут по ⚑
установить [счёт v] в (0)

когда щёлкнут по этому спрайту
изменить [счёт v] на (1)
сказать [Мяу!] (1) сек
если <(счёт) = (5)> то
сказать [Устал…] (2) сек
остановить [все v]
конец
score = 0

def on_click():
global score
score += 1
print("Мяу!")
if score == 5:
print("Устал…")
return True
return False

while True:
input("Enter — клик по спрайту… ")
if on_click():
break

Спросить имя и поздороваться

когда щёлкнут по ⚑
спросить [Как тебя зовут?] и ждать
сказать (объединить [Привет, ] (ответ))
name = input("Как тебя зовут? ")
print(f"Привет, {name}")

Случайное число

установить [загадка v] в (случайное число от (1) до (10))
import random

secret = random.randint(1, 10)

Сводная таблица по категориям

События

Блок ScratchPythonКомментарий
когда щёлкнут по ⚑if __name__ == "__main__":Старт программы
когда щёлкнут по этому спрайтуобработчик в Tkinter / PygameВ консоли — input()
когда нажата клавиша [→]while + опрос клавишВ Scratch реакция автоматическая
передать сообщение [старт]флаг, очередь, callbackСвязь между частями программы
когда я получу сообщение [старт]if started: / подписка на событиеИмя сообщения должно совпадать

Управление

Блок ScratchPythonКомментарий
повторить (N)for _ in range(N):Известное число шагов
всегдаwhile True:Добавьте time.sleep(0.02)
повторять пока <…>while условие:Проверка перед телом цикла
если <> то … конецif …: + отступОтступ = «карман» блока
иначеelse:Вторая ветка
ждать (0.5) секtime.sleep(0.5)Пауза в секундах
остановить [все]break / return / sys.exit()Зависит от задачи

Движение и перо

Блок ScratchPython (turtle)Комментарий
идти (10) шаговt.forward(10)Шаг вперёд
повернуть ↻ на (90)t.left(90)Угол в градусах
идти в x: (0) y: (0)t.goto(0, 0)Координаты сцены Scratch
опустить пероt.pendown()Рисовать линию
поднять пероt.penup()Движение без следа
стереть всёt.clear()След; clearscreen() — всё окно

Переменные и операторы

Блок ScratchPythonКомментарий
установить [x v] в (0)x = 0Присваивание
изменить [x v] на (1)x += 1То же для -=, *=
сказать [текст]print("текст")Вывод в консоль
спросить [вопрос] и ждатьinput("вопрос")Строка от пользователя
(a) + (b)a + bАрифметика
(a) и (b)a and bЛогическое «и»
случайное число от (1) до (10)random.randint(1, 10)Оба конца включены
добавить [x] к [список v]items.append("x")Список Python

Полные примеры

1. Радужный многоугольник

Scratch (фрагмент из мини-проектов):

когда щёлкнут по ⚑
опустить перо
повторить (36)
изменить цвет ▶ на (10)
идти (20) шагов
повернуть ↻ на (10) градусов
конец

Python:

import turtle

t = turtle.Turtle()
t.speed(0)
t.pendown()
palette = ["red", "orange", "gold", "green", "blue", "violet"]

for i in range(36):
t.pencolor(palette[i % len(palette)])
t.forward(20)
t.left(10)

turtle.done()

2. Движение стрелками (упрощённо)

В Scratch цикл всегда проверяет клавиши каждый кадр. В Python без GUI — упрощённый вариант через Turtle и опрос (для игр удобнее Pygame):

import turtle

t = turtle.Turtle()
screen = turtle.Screen()
step = 8

def left():
t.setx(t.xcor() - step)

def right():
t.setx(t.xcor() + step)

screen.onkey(left, "Left")
screen.onkey(right, "Right")
screen.listen()

turtle.done()

Scratch-эквивалент:

когда щёлкнут по ⚑
всегда
если <клавиша [→ v] нажата?> то
изменить x на (5)
конец
если <клавиша [← v] нажата?> то
изменить x на (-5)
конец
ждать (0.02) сек
конец

3. Сбор монет

когда щёлкнут по ⚑
установить [счёт v] в (0)

когда я коснусь [Монета v]
изменить [счёт v] на (1)
спрятать
score = 0
player = {"x": 0, "y": 0}
coins = [{"x": 80, "y": 40, "visible": True}]

def try_collect():
global score
for coin in coins:
if not coin["visible"]:
continue
if abs(player["x"] - coin["x"]) < 25 and abs(player["y"] - coin["y"]) < 25:
score += 1
coin["visible"] = False
print("Счёт:", score)

Типичные ошибки при переносе

В ScratchЧто ломается в PythonКак исправить
Блок «вне» если, хотя должен быть внутриДействие выполняется всегдаПроверьте отступы (4 пробела)
= вместо == в условииPython присвоит значениеСравнение — только ==
Цикл всегда без ждать100% загрузка CPUtime.sleep(0.02) в теле while True
Имя переменной счёт с кириллицейРаботает, но в учебниках — латиницаscore, lives, speed
Ожидание «клика по спрайту» в консолиinput() — не координатыTkinter, Pygame или упрощённый input()
Главная идея

Переход Scratch → Python — это замена обёртки при том же скелете: цикл остаётся циклом, условие — условием, переменная — переменной. Меняются скобки, отступы и способ запуска. Подробный разбор на примере «кота» — в главе «Блоки», § «От графики к тексту».


Куда дальше

ЦельМатериал
Ещё блоки Scratch112 — примеры скриптов, 1121 — мини-проекты
Справочник редактораScratch §1–§17
Первый полноценный PythonПрограмма на Python
РисованиеTurtle — Lab, Turtle — энциклопедия
Блоки + текст PythonEdublocks
Задачи ЕГЭ / олимпиады1122 — алгоритмы на Python

См. также

Другие статьи этого же раздела в боковом меню (как на странице "О разделе").