❌ Ошибка 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: infinite loop
i = 0
while i < 10:
print(i)
i -= 1 # moves away from the exit condition
Сообщение об ошибке: программа «зависает».
Почему возникает: i уменьшается, а условие выхода требует, чтобы i стало больше или равно 10.
✅ Исправление
i = 0
while i < 10:
print(i)
i += 1
Что изменилось: переменная увеличивается, приближаясь к условию выхода.
❌ Ошибка 3: Изменение переменной после continue
# Wrong: infinite loop when i is even
count = 0
while count <= 5:
print("Число:", count)
if count == 3:
continue
count += 1
Сообщение об ошибке: цикл зацикливается при достижении count == 3.
Почему возникает: при срабатывании continue инкремент count += 1 не выполняется.
✅ Исправление
count = 0
while count <= 5:
print("Число:", count)
if count == 3:
count += 1
continue
count += 1
Что изменилось: инкремент добавлен перед continue.
❌ Ошибка 4: Путаница между break и continue
# Wrong: exits 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.
❌ Ошибка 5: Выход за границы строки
# Wrong: IndexError
text = "hello"
print(text[10]) # IndexError: string index out of range
print(text[-6]) # IndexError
Сообщение об ошибке: IndexError: string index out of range
Почему возникает: индекс больше len(text) - 1 или меньше -len(text).
✅ Исправление
text = "hello"
index = 5
if 0 <= index < len(text):
print(text[index])
else:
print("Index out of range!")
Что изменилось: перед обращением проверяем, что индекс находится в допустимом диапазоне.
❌ Ошибка 6: Попытка изменить строку по индексу
# Wrong: TypeError
text = "hello"
text[0] = "H" # TypeError: 'str' object does not support item assignment
Сообщение об ошибке: TypeError: 'str' object does not support item assignment
Почему возникает: строки в Python неизменяемы.
✅ Исправление
text = "hello"
text = "H" + text[1:]
print(text) # Hello
Что изменилось: создаём новую строку и присваиваем её переменной.
❌ Ошибка 7: Неправильный порядок индексов в срезе
# Wrong: empty result
text = "Python programming"
print(text[-4:-11]) # empty string
print(text[14:7]) # empty string
Сообщение об ошибке: ошибки нет, но результат пустая строка.
Почему возникает: при положительном шаге start должен быть меньше end.
✅ Исправление
text = "Python programming"
print(text[-11:-4]) # program
print(text[7:14]) # program
Что изменилось: индексы расположены в правильном порядке.
❌ Ошибка 8: Неверное сравнение строк без учёта регистра
# Wrong: unexpected False
print("Apple" == "apple") # False
Сообщение об ошибке: ошибки нет, но сравнение даёт неожиданный результат.
Почему возникает: заглавные и строчные буквы имеют разные коды Unicode.
✅ Исправление
print("Apple".lower() == "apple".lower()) # True
Что изменилось: строки приведены к одному регистру перед сравнением.