❌ Ошибка 1: Забытое увеличение переменной цикла
# Wrong: infinite loop
i = 1
while i <= 5:
print(i)
# forgot i += 1
Сообщение об ошибке: программа «зависает» или не завершается (нет явной ошибки, цикл выполняется бесконечно).
Почему возникает: условие i <= 5 всегда истинно, потому что i не меняется.
✅ Исправление
i = 1
while i <= 5:
print(i)
i += 1
Что изменилось: добавлен инкремент переменной цикла в конце тела.
❌ Ошибка 2: Неправильные отступы тела цикла
# Wrong: IndentationError
i = 0
while i < 5:
print(i)
i += 1
Сообщение об ошибке: IndentationError: expected an indented block after 'while' statement
Почему возникает: в Python тело цикла должно быть с отступом относительно заголовка while.
✅ Исправление
i = 0
while i < 5:
print(i)
i += 1
Что изменилось: строки внутри цикла выровнены на один уровень отступа.
❌ Ошибка 3: Off-by-one (пограничное значение)
# Wrong: prints 1..4 instead of 1..5
i = 1
while i < 5:
print(i)
i += 1
Сообщение об ошибке: ошибки нет, но выводится на одно число меньше, чем ожидалось.
Почему возникает: условие i < 5 останавливает цикл, когда i равно 5, поэтому последнее напечатанное число — 4.
✅ Исправление
i = 1
while i <= 5:
print(i)
i += 1
Что изменилось: условие изменено на i <= 5, чтобы включить 5.
❌ Ошибка 4: Размещение изменения переменной после continue
# Wrong: infinite loop when i is even
i = 1
while i <= 5:
if i % 2 == 0:
continue
print(i)
i += 1
Сообщение об ошибке: программа зацикливается на чётном значении i.
Почему возникает: при срабатывании continue инкремент i += 1 не выполняется, поэтому значение i не меняется.
✅ Исправление
i = 1
while i <= 5:
if i % 2 == 0:
i += 1
continue
print(i)
i += 1
Что изменилось: инкремент переменной цикла добавлен перед continue.
❌ Ошибка 5: Путаница между break и continue
# Wrong: exit instead of skipping
i = 0
while i < 5:
i += 1
if i == 3:
break # meant to skip 3
print(i)
# Output: 1 2
Сообщение об ошибке: ошибки нет, но программа завершается раньше времени.
Почему возникает: break прерывает весь цикл, а не текущую итерацию.
✅ Исправление
i = 0
while i < 5:
i += 1
if i == 3:
continue # skip only this iteration
print(i)
# Output: 1 2 4 5
Что изменилось: break заменён на continue, чтобы пропустить только одну итерацию.
❌ Ошибка 6: Несоответствие диапазона random
# Wrong: condition never true
import random
number = random.randint(1, 5)
if number == 6:
print("You won!")
Сообщение об ошибке: ошибки нет, но сообщение о выигрыше никогда не появится.
Почему возникает: random.randint(1, 5) возвращает числа от 1 до 5 включительно, поэтому 6 выпасть не может.
✅ Исправление
import random
number = random.randint(1, 6)
if number == 6:
print("You won!")
Что изменилось: верхняя граница randint изменена на 6, чтобы включить выпадение шестёрки.