❌ Ошибка 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: неэкранированные фигурные скобки в f-string
name = "Python"
print(f"{{name}}")
# {name}
Почему возникает: двойные фигурные скобки экранируются и не вставляют значение переменной.
✅ Исправление
name = "Python"
print(f"{name}") # Python
print(f"{{name}}") # {name} — если нужны литеральные скобки
❌ Ошибка 6: проверка пустой строки через isdigit()
text = ""
if text.isdigit():
print("Это число")
else:
print("Это не число")
Почему возникает: для пустой строки все предикаты возвращают False. Это логично, но иногда забывают проверить, что строка не пуста.
✅ Исправление
text = input("Введите число: ")
if text and text.isdigit():
print("Это число")
else:
print("Это не число")
❌ Ошибка 7: путаница между title() и capitalize()
text = "hello world"
print(text.capitalize()) # Hello world
print(text.title()) # Hello World
Почему возникает: capitalize() делает заглавной только первую букву строки, а title() — первую букву каждого слова.
✅ Исправление
text = "hello world"
print(text.title()) # Hello World