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

❌ Ошибка 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, чтобы включить выпадение шестёрки.