🏠 Главная 🐞 Словарь ошибок

🐞 Словарь ошибок

Красный текст в терминале — это не провал, а подсказка. Python всегда пишет, ЧТО его смутило и ГДЕ. Научишься читать ошибки — будешь чинить программы за минуту. Это умеют все настоящие программисты.

Главное правило: читай снизу вверх Самая последняя строчка — ЧТО сломалось (название ошибки). Строчка File "…", line N — ГДЕ это случилось (номер строки!). Всё остальное — путь, как Python туда добрался. Смотри сначала на низ.

🔍 Как выглядит ошибка

Разберём по частям типичный «traceback» (так называется отчёт об ошибке):

Traceback (most recent call last): File "snake.py", line 17, in <module> ← ГДЕ: файл snake.py, строка 17 scren.fill(BLACK) ← сама строка с проблемой NameError: name 'scren' is not defined ← ЧТО: вот это и сломалось

Видишь? Низ говорит «не знаю слова scren», а строчка line 17 показывает, куда смотреть. Дальше — словарик частых ошибок.

NameError: name '…' is not defined

NameError: name 'scren' is not defined

Что значит: Python встретил слово, которого не знает. Почти всегда это опечатка в имени: переменную ты заводил как screen, а написал scren.

Как починить: сравни написание буква в букву с тем местом, где ты создавал эту переменную.

SyntaxError: expected ':'

File "snake.py", line 22 while True ^ SyntaxError: expected ':'

Что значит: «синтаксис» — это грамматика языка. После while, if, for и def в конце строки нужно двоеточие. Стрелочка ^ показывает, где Python запутался.

Как починить: добавь : в конец строки → while True:

IndentationError: expected an indented block

File "snake.py", line 23 screen.fill(BLACK) ^ IndentationError: expected an indented block after 'while' statement on line 22

Что значит: в Python отступы (пробелы слева) показывают, что находится внутри цикла или if. Строки внутри while должны быть сдвинуты вправо.

Как починить: поставь курсор в начало строки и нажми Tab (или 4 пробела), чтобы код «зашёл внутрь» цикла.

IndexError: list index out of range

File "snake.py", line 76, in <module> head = snake[5] IndexError: list index out of range

Что значит: ты просишь у списка элемент, которого нет. Если в snake три клетки — есть номера 0, 1, 2, а snake[5] уже за краем.

Как починить: помни — счёт с нуля. Голова — snake[0], самый последний элемент — snake[-1].

TypeError: can only concatenate …

File "snake.py", line 35, in <module> new_head = snake[0] + 1 TypeError: can only concatenate tuple (not "int") to tuple

Что значит: ты складываешь разные «типы»: кортеж (5, 10) и число 1 — так нельзя. Числа складываются с числами, текст с текстом.

Как починить: сложи по отдельности x и y: (snake[0][0] + 1, snake[0][1]).

ModuleNotFoundError: No module named 'pygame'

File "snake.py", line 6, in <module> import pygame, sys ModuleNotFoundError: No module named 'pygame'

Что значит: Python не нашёл библиотеку pygame. Чаще всего ты не в «коробке» venv или ещё не поставил pygame.

Как починить: в терминале набери source .venv/bin/activate, потом pip install pygame-ce. Подробно — на странице Подготовка.

🗣️ Ошибки нет, но игра ведёт себя странно? Программа запускается, но что-то не так? Прочитай свой код вслух, по одной строчке. 9 из 10 багов находятся именно так: глаз «проскакивает», а голос — нет. А ещё помогает print(…) — вставь его, чтобы увидеть, что лежит в переменной прямо сейчас.
← НазадГлавная