Строки в Python для начинающих: индексы, срезы, методы, f-строки
Как устроены строки в Python: индексы с нуля, срезы, почему методы не меняют исходную строку и как собрать текст из переменных f-строкой.
Перейти к практике по теме курса ↓
Строка в Python — это текст в кавычках: "привет" или 'привет', разницы нет. С ней работают так же, как с последовательностью букв: можно взять одну букву, кусок, узнать длину, заменить часть. Вот главное, что нужно знать новичку.
Индексы: счёт с нуля
У каждой буквы есть номер, и считают его с нуля:
word = "Python"
print(word[0]) # P
print(word[5]) # n
print(word[-1]) # n — отрицательный номер считает с конца
print(len(word)) # 6
Последняя буква — word[len(word) - 1], но проще писать word[-1]. Номер за пределами строки даёт ошибку IndexError: у слова из шести букв нет буквы с номером 6.
Срезы: кусок строки
Срез берёт буквы с одного номера до другого, причём правая граница не входит:
word[0:2] # "Py" — буквы 0 и 1
word[2:] # "thon" — от второй до конца
word[:-2] # "Pyth" — всё, кроме двух последних
word[::-1] # "nohtyP" — задом наперёд
Правило «правая граница не входит» кажется странным, но удобно: word[:2] + word[2:] всегда даёт исходную строку, и длина среза — просто разность номеров.
Строки не меняются
Это главная ловушка. Методы строки не трогают её саму, а возвращают новую:
name = " анна "
name.strip() # вернёт "анна", но name осталась прежней
name = name.strip() # вот так строка правда поменяется
print(name.title()) # Анна
Поэтому вызов text.upper() без присваивания ничего не делает с text. Самые нужные методы: upper и lower меняют регистр, strip убирает пробелы по краям, replace заменяет кусок, split режет строку на список слов, find ищет подстроку. Проверить, есть ли кусок внутри строки, проще всего так: "th" in word.
f-строки: текст из переменных
Чтобы вставить значения в текст, перед кавычками ставят букву f, а переменные пишут в фигурных скобках:
name = "Анна"
score = 9.456
print(f"{name}, ваш результат: {score:.1f}")
# Анна, ваш результат: 9.5
После двоеточия в скобках можно задать формат: :.1f — один знак после запятой. Склеивать строки плюсом тоже можно, но число придётся сначала превратить в строку через str(), иначе будет ошибка.
Где потренироваться
Строкам посвящён третий урок курса Python: срезы, методы и f-строки на заданиях, которые проверяются прямо в браузере. Если вы только начинаете, стоит начать с первой программы. А разбор циклов по числам — в статье цикл for и range. Весь путь — в курсе Python с нуля.
Попробуйте задание из курса
Откройте первый урок: теория и начало практики доступны без регистрации.