Типичные ошибки в условиях и циклах
Это урок про ошибки, и это один из самых важных уроков. Зная типичные ловушки заранее, ты избежишь часов отладки.
Ошибка 1: = вместо ==
# НЕПРАВИЛЬНО, присваивание вместо сравнения
if x = 5: # SyntaxError
print("да")
# ПРАВИЛЬНО, сравнение
if x == 5:
print("да")
Одно =, присвоить. Два ==, сравнить. Это путают постоянно.
Ошибка 2: Неверные отступы
# НЕПРАВИЛЬНО, print не имеет отступа
if age > 18:
print("Доступ разрешён") # IndentationError
# ПРАВИЛЬНО
if age > 18:
print("Доступ разрешён")
Python использует отступы вместо скобок. 4 пробела, стандарт. Смешивать пробелы и табуляцию нельзя.
Ошибка 3: Бесконечный цикл
# ОПАСНО, условие никогда не станет False
x = 0
while x < 10:
print(x)
# забыли x += 1, цикл крутится вечно!
# ПРАВИЛЬНО
x = 0
while x < 10:
print(x)
x += 1 # обязательно обновляем переменную
Если программа зависла, скорее всего бесконечный цикл. Останови через Ctrl+C.
Ошибка 4: Сравнение с None
result = None
# НЕПРАВИЛЬНО
if result == None: # работает, но не питонично
print("пусто")
# ПРАВИЛЬНО
if result is None:
print("пусто")
if result is not None:
print("есть значение")
None в Python, специальное значение "ничего". Для сравнения с ним используют is, а не ==.
Ошибка 5: Логика AND/OR
city = "Москва"
# НЕПРАВИЛЬНО, Python не понимает "так"
if city == "Москва" or "СПб": # всегда True!
print("Большой город")
# ПРАВИЛЬНО
if city == "Москва" or city == "СПб":
print("Большой город")
# Или лучше через in
if city in ("Москва", "СПб"):
print("Большой город")
Ошибка 6: Изменение списка внутри цикла
numbers = [1, 2, 3, 4, 5]
# ОПАСНО, изменяем список пока идём по нему
for n in numbers:
if n % 2 == 0:
numbers.remove(n) # непредсказуемое поведение!
# ПРАВИЛЬНО, создаём новый список
numbers = [n for n in numbers if n % 2 != 0]
Что делать когда что-то не работает
- Прочитай текст ошибки, Python обычно точно говорит что не так
- Посмотри на строку где ошибка (Python указывает номер)
- Проверь отступы
- Добавь
print()чтобы посмотреть значения переменных в разных местах - Скопируй текст ошибки в поиск, решение почти всегда уже есть
💡 Главная мысль: Ошибки, нормальная часть программирования. Даже опытные разработчики делают их каждый день. Важно уметь их читать и понимать.