Python: Извлечение символов из строки

Иногда нужно получить один символ из строки. Например, если сайт знает имя и фамилию пользователя и нужно вывести их в сокращённом формате — A. Ivanov. Для этого потребуется взять первую букву имени.

В Python для таких задач есть специальный механизм — индексация.

🔢 Индексация: как это работает

Представим, что у нас есть строка:

first_name = 'Alexander'

Чтобы получить первую букву, указываем её позицию (индекс) в квадратных скобках:

print(first_name[0])  # => A

Индексы в Python (и во многих языках) начинаются с нуля:

Символ	A	l	e	x	a	n	d	e	r
Индекс	0	1	2	3	4	5	6	7	8

Чтобы получить, например, последний символ, можно написать:

print(first_name[8])  # => r

А если выйти за границы строки:

print(first_name[9])

IndexError: string index out of range

📍 Укороченное извлечение с конца

Часто нужно получить последний символ строки, но заранее неизвестна её длина. В этом случае можно использовать отрицательные индексы:

print(first_name[-1])  # => r
print(first_name[-2])  # => e

Отрицательные индексы работают так:

  • -1 — последний символ
  • -2 — предпоследний
  • и так далее

Это удобно, когда не хочется считать длину строки вручную.

🧠 Индекс — это не только число

Индекс можно хранить в переменной, а не записывать прямо:

index = 0
print(first_name[index])  # => A

Такой подход полезен, когда индекс вычисляется где-то в коде, а потом используется для доступа к нужному символу.

💡 Подумайте: что выведет этот код?

magic = '\nyou'
print(magic[1])  # => ?

В строке '\nyou' первый символ — это \n (перенос строки), а под индексом 1 — буква y. Вывод будет:

y

🔁 Закрепим

  • Строки можно индексировать — получать символы по номеру.
  • Отсчёт с начала идёт с 0, с конца — с -1.
  • Можно использовать как числа, так и переменные в качестве индексов.
  • Если индекс выходит за пределы строки — будет ошибка.

Задание

Выведите на экран последний символ строки, находящейся в переменной name

Определения

Индекс
позиция символа внутри строки.
Как с вами связаться? 🙃

Команда проекта находится в телеграм-сообществе по ссылке https://ttttt.me/HexletLearningBot. Там можно задать любой вопрос и повлиять на проект

Упражнение не проходит проверку — что делать? 😶

Если вы зашли в тупик, то самое время поговорить с нашим асситентом Тота во вкладке "ИИ-помощник". Как правильно задать вопрос:

В моей среде код работает, а здесь нет 🤨

Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.

Мой код отличается от решения учителя 🤔

Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи. В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.

Прочитал урок — ничего не понятно 🙄

Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в обратной связи нашего сообщества

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются

Привет! Я Тота и моя задача помочь в обучении. Чтобы активировать меня, нужно зарегистрироваться или залогиниться, если у вас уже есть аккаунт

Loading...

Ваше упражнение проверяется по этим тестам

1from hexlet.test import expect_output
2
3
4def test(capsys):
5    expected = "s"
6    expect_output(capsys, expected)
7

Решение учителя откроется через:

20:00
waiting_clock