❌ Ошибка 1: Забытое двоеточие после заголовка for
# Wrong: SyntaxError
for i in range(5)
print(i)
Сообщение об ошибке: SyntaxError: expected ':'
Почему возникает: после заголовка цикла обязательно должно стоять двоеточие.
✅ Исправление
for i in range(5):
print(i)
Что изменилось: добавлено двоеточие в конце заголовка цикла.
❌ Ошибка 2: Неправильные отступы тела цикла
# Wrong: IndentationError
for i in range(5):
print(i)
Сообщение об ошибке: IndentationError: expected an indented block after 'for' statement
Почему возникает: в Python тело цикла должно быть с отступом относительно заголовка for.
✅ Исправление
for i in range(5):
print(i)
Что изменилось: строка print(i) выровнена на один уровень отступа.
❌ Ошибка 3: Путаница с границами range
# Wrong: prints 1..4 instead of 1..5
for i in range(1, 5):
print(i)
Сообщение об ошибке: ошибки нет, но выводится на одно число меньше, чем ожидалось.
Почему возникает: range(1, 5) генерирует числа 1, 2, 3, 4; верхняя граница не включается.
✅ Исправление
for i in range(1, 6):
print(i)
Что изменилось: верхняя граница увеличена на 1, чтобы включить 5.
❌ Ошибка 4: Изменение переменной цикла внутри тела
# Wrong: confusing behavior
for i in range(5):
print(i)
i += 10
Сообщение об ошибке: ошибки нет, но вывод остаётся 0 1 2 3 4.
Почему возникает: переменная цикла перезаписывается на каждой итерации следующим элементом из range(). Изменение i внутри тела не влияет на последовательность.
✅ Исправление
for i in range(0, 50, 10):
print(i)
Что изменилось: нужная последовательность задана сразу в range().
❌ Ошибка 5: Путаница между break и continue
# Wrong: exits instead of skipping
for letter in "Python":
if letter == "h":
break # meant to skip
print(letter, end=" ")
# Output: P y t
Сообщение об ошибке: ошибки нет, но программа завершается раньше времени.
Почему возникает: break прерывает весь цикл, а не текущую итерацию.
✅ Исправление
for letter in "Python":
if letter == "h":
continue # skip only this iteration
print(letter, end=" ")
# Output: P y t o n
Что изменилось: break заменён на continue, чтобы пропустить только одну итерацию.
❌ Ошибка 6: range с отрицательным шагом в неправильном направлении
# Wrong: empty sequence
for i in range(0, 10, -1):
print(i)
Сообщение об ошибке: ошибки нет, но ничего не выводится.
Почему возникает: при отрицательном шаге start должен быть больше stop. Здесь 0 < 10, поэтому последовательность пуста.
✅ Исправление
for i in range(10, 0, -1):
print(i)
Что изменилось: границы поменяны местами, чтобы идти от большего к меньшему.
❌ Ошибка 7: Неправильное понимание for/else
# Wrong: else runs even after break
for letter in "Python":
if letter == "h":
print("Found")
break
print(letter)
else:
print("Not found") # should not run
Сообщение об ошибке: ошибки нет, но логика может быть неожиданной.
Почему возникает: если ожидалось, что else всегда выполняется после цикла, это заблуждение. Блок else пропускается, если был break.
✅ Правильное понимание
for letter in "Python":
if letter == "x":
print("Found")
break
else:
print("Not found") # runs because no break
Что изменилось: else используется как обработчик случая, когда цикл дошёл до конца без прерывания.