❌ Ошибка 1: попытка изменить строку по индексу
text = "hello"
text[0] = "H"
# TypeError: 'str' object does not support item assignment
Почему возникает: строки в Python неизменяемы. Нельзя заменить отдельный символ напрямую.
✅ Исправление
text = "hello"
new_text = "H" + text[1:]
print(new_text) # Hello
# Или через replace
print(text.replace("h", "H", 1)) # Hello
❌ Ошибка 2: не сохранён результат метода
text = " hello "
text.strip()
print(f"[{text}]") # [ hello ] — пробелы остались
Почему возникает: метод strip() возвращает новую строку, но результат никуда не присвоен.
✅ Исправление
text = " hello "
text = text.strip()
print(f"[{text}]") # [hello]
❌ Ошибка 3: путаем find() и index()
text = "hello world"
pos = text.index("Python")
# ValueError: substring not found
Почему возникает: index() вызывает исключение, если подстрока не найдена.
✅ Исправление
text = "hello world"
pos = text.find("Python")
if pos == -1:
print("Не найдено")
else:
print(f"Найдено на позиции {pos}")
❌ Ошибка 4: split() против split(" ")
text = "a b\tc"
print(text.split(" "))
# ['a', '', '', 'b\t', 'c']
Почему возникает: split(" ") разбивает только по одному пробелу, не обрабатывая табуляцию, перенос строки и несколько пробелов подряд.
✅ Исправление
text = "a b\tc"
print(text.split())
# ['a', 'b', 'c']
❌ Ошибка 5: модификация списка при итерации
numbers = [1, 2, 3, 4, 5]
for number in numbers:
if number % 2 == 0:
numbers.remove(number)
print(numbers) # [1, 3, 5] — иногда работает, но это случайность
Почему возникает: при удалении элемента сдвигаются индексы, и цикл может пропустить элементы.
✅ Исправление
numbers = [1, 2, 3, 4, 5]
result = [n for n in numbers if n % 2 != 0]
print(result) # [1, 3, 5]
❌ Ошибка 6: ошибки со срезами
numbers = [1, 2, 3, 4, 5]
print(numbers[1:3]) # [2, 3] — а не [2, 3, 4]
Почему возникает: правая граница среза не включается.
✅ Исправление
numbers = [1, 2, 3, 4, 5]
print(numbers[1:4]) # [2, 3, 4]
❌ Ошибка 7: выход за границы списка
numbers = [1, 2, 3]
for i in range(len(numbers)):
print(numbers[i + 1]) # IndexError на последнем шаге
Почему возникает: индекс i + 1 выходит за пределы списка.
✅ Исправление
numbers = [1, 2, 3]
for i in range(len(numbers) - 1):
print(numbers[i + 1])
❌ Ошибка 8: пустая строка и предикаты
text = ""
if text.isdigit():
print("Это число")
else:
print("Это не число") # пустая строка даёт False
Почему возникает: для пустой строки все предикаты возвращают False. Это логично, но иногда забывают проверить, что строка не пуста.
✅ Исправление
text = input("Введите число: ")
if text and text.isdigit():
print("Это число")
else:
print("Это не число")