🐛 Типичные ошибки

⚡ Кратко

Сверяйте сообщение об ошибке с причиной и исправлением. Воспроизведите хотя бы одну ошибку самостоятельно и затем устраните её.

❌ Ошибка 1: пропущен отступ после двоеточия

if x > 0:
print("Положительное")

Сообщение об ошибке: IndentationError: expected an indented block

Почему возникает: Python использует отступы для выделения блоков. После if: обязательно нужен отступ.

✅ Исправление

if x > 0:
    print("Положительное")

❌ Ошибка 2: elif или else без if

x = 5
elif x == 5:
    print("Пять")

Сообщение об ошибке: SyntaxError: invalid syntax

Почему возникает: elif и else могут стоять только после if или другого elif.

✅ Исправление

x = 5
if x == 5:
    print("Пять")
elif x > 5:
    print("Больше пяти")

❌ Ошибка 3: путаем elif с несколькими независимыми if

score = 85

if score >= 90:
    print("Отлично")
if score >= 75:
    print("Хорошо")
if score >= 50:
    print("Удовлетворительно")
else:
    print("Неудовлетворительно")

Почему возникает: здесь сработают сразу несколько блоков, потому что это независимые if. Для взаимоисключающих оценок нужна цепочка if-elif-else.

✅ Исправление

score = 85

if score >= 90:
    print("Отлично")
elif score >= 75:
    print("Хорошо")
elif score >= 50:
    print("Удовлетворительно")
else:
    print("Неудовлетворительно")

❌ Ошибка 4: сложная логика в тернарном операторе

x = 20
y = 10
z = 0

print(x) if (x > 10 and y < 5 or z == 0) else print(0)

Почему возникает: тернарный оператор предназначен для простых выборов значений. Сложные условия с and/or делают строку трудной для чтения и отладки.

✅ Исправление

x = 20
y = 10
z = 0

if x > 10 and y < 5 or z == 0:
    print(x)
else:
    print(0)

❌ Ошибка 5: match-case в старой версии Python

value = 1
match value:
    case 1:
        print("Один")

Сообщение об ошибке: SyntaxError: invalid syntax (в Python < 3.10)

Почему возникает: конструкция match-case появилась только в Python 3.10. В более ранних версиях match не является ключевым словом.

✅ Исправление

Используйте Python 3.10 или новее, либо замените match-case на цепочку if-elif-else:

value = 1
if value == 1:
    print("Один")
elif value == 2:
    print("Два")
else:
    print("Другое")