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

❌ Ошибка 1: Попытка изменить строку по индексу

# Wrong
s = "Hello"
s[0] = "h"
print(s)

Сообщение об ошибке: TypeError: 'str' object does not support item assignment

Почему возникает: строки неизменяемы. Нельзя заменить отдельный символ напрямую.

✅ Исправление

s = "Hello"
s = "h" + s[1:]
print(s)  # hello

Что изменилось: создана новая строка через срез и конкатенацию.

❌ Ошибка 2: Выход за границы строки

# Wrong
text = "Python"
print(text[10])

Сообщение об ошибке: IndexError: string index out of range

Почему возникает: индекс 10 больше, чем длина строки 6.

✅ Исправление

text = "Python"
index = 10
if index < len(text):
    print(text[index])
else:
    print("Индекс вне диапазона")

Что изменилось: перед обращением к индексу проверяется длина строки.

❌ Ошибка 3: Ожидание, что метод изменит исходную строку

# Wrong
text = "  hello  "
text.strip()
print(text)  # "  hello  " — пробелы на месте

Почему возникает: метод strip() возвращает новую строку, а не изменяет исходную.

✅ Исправление

text = "  hello  "
text = text.strip()
print(text)  # "hello"

Что изменилось: результат метода присвоен переменной.

❌ Ошибка 4: Регистрозависимое сравнение без приведения регистра

# Wrong
print("Python" == "python")  # False

Почему возникает: символы в разных регистрах имеют разные коды Unicode.

✅ Исправление

print("Python".lower() == "python".lower())  # True

Что изменилось: обе строки приведены к одному регистру перед сравнением.

❌ Ошибка 5: Путаница в границах среза

# Wrong expectation: "Hel"
text = "Hello"
print(text[0:3])  # "Hel" — correct
print(text[0:4])  # "Hell" — the end index is not included

Почему возникает: конечный индекс в срезе не включается.

✅ Исправление

text = "Hello"
print(text[0:3])  # characters at indices 0, 1, 2

Что изменилось: помните, что срез [start:end] включает start и исключает end.

❌ Ошибка 6: Проверка вхождения подстроки с учётом регистра

# Wrong
print("python" in "Python programming")  # False

Почему возникает: оператор in ищет точное совпадение, регистр важен.

✅ Исправление

print("python" in "Python programming".lower())  # True

Что изменилось: строка приведена к нижнему регистру перед проверкой.