Условие
Во второй строке выведите предпоследний символ этой строки.
В третьей строке выведите первые пять символов этой строки.
В четвертой строке выведите всю строку, кроме последних двух символов.
В пятой строке выведите все символы с четными индексами (считая, что индексация начинается с 0, поэтому символы выводятся начиная с первого).
В шестой строке выведите все символы с нечетными индексами, то есть начиная со второго символа строки.
В седьмой строке выведите все символы в обратном порядке.
В восьмой строке выведите все символы строки через один в обратном порядке, начиная с последнего.
В девятой строке выведите длину данной строки.
Решение
s = input() print(s[2]) print(s[-2]) print(s[:5]) print(s[:-2]) print(s[::2]) print(s[1::2]) print(s[::-1]) print(s[::-2]) print(len(s))
Методы строк для начинающих
У строк в Python есть множество полезных методов для того, чтобы дать возможность делать со строками различные полезные и нужные действия.
Методы похожи на функции, их тоже можно вызывать и, так же как и функции, они могут возвращать результат своей работы. Отличие же методов в том, что они привязаны к определенному типу данных и, например, методы строк могут быть вызваны только у строк.
Все методы строк можно посмотреть в нашем справочнике , а вот несколько примеров того, как вызывать методы строк.
string = "Hello world!"print(string.lower()) # hello world!print(string.upper()) # HELLO WORLD!
Начинающему программисту важно помнить, что методы не меняют исходную строку. Строки в Python вообще нельзя изменить. Если вы хотите поменять все ее символы, например, на символы нижнего регистра, нужно присвоить строке новое значение
string = "Hello world!"string = string.lower()
Индексы строк ¶
Бывает так, что иногда появляется необходимость выбирать отдельные символы из строки. В Python для этого необходимо использовать квадратные скобки. В таблице ниже приведены примеры получения символа строки по индексу строки Python, помещенной в переменную string .
| Код | Результат | Описание |
|---|---|---|
| s[0] | P | Первый символ |
| s[1] | y | Второй символ |
| s[-1] | n | Последний символ |
| s[-2] | o | Предпоследний символ |
Как вы видите, необходимо учитывать, что номером индекса первого символа будет [0] Отрицательный индекс будет отсчитывать символы с конца строки. Распространенная ошибка: предположим, что мы пытаемся задать индекс s[12] . Но в примере выше мы имеем всего шесть элементов строки, и логично что Python выдаст ошибку следующего содержания:
IndexError: string index out of range
Срезы строк ¶
Срез используется для выделения части строки. Он состоит из индекса и диапазона. Ниже расположены несколько примеров со строкой
string = 'абвгдежзик'
0 1 2 3 4 5 6 7 8 9
а б в г д е ж з и к
| Фрагмент кода | Результат | Описание |
|---|---|---|
| string[ 2 : 5 ] | вгд | Символы с индексом 2, 3, 4 |
| string[ : 5 ] | абвгд | Первые пять символов |
| string[ 5 : ] | ежзик | Символы, начиная с индекса 5 и до конца |
| string[ -2 : ] | ик | Последние два символа |
| string[ : ] | абвгдежзик | Вся строка |
| string[1 : 7 : 2] | бге | Со второго по шестой символы, через один |
| string[ : : -1 ] | кизжедгвба | Обратный шаг, строка наоборот |
Базовая структура среза выглядит следующим образом: Строка [начальный\_символ : конечный_символ + 1]
Срезы не включают явное расположение окончания строки. Например, в приведенном выше примере string[2:5] , Python выведет символы с индексами 2, 3 и 4, но не символ с индексом 5.
Мы можем оставить, вместо индекса начала или окончания строки, пустоту. Пустота на месте индекса начала будет по умолчанию равна нулю. Итак, string[:5] выведет первые пять символов строки string. А в случае string[5:] , Python покажет символы, начиная с индекса 5 и до конца строки. Если же использовать отрицательные индексы, мы получим символы с конца строки. Например, string[-2:] — это последние два символа.
Также существует необязательный третий аргумент, который указывает на шаг среза строки. Например, string[1:7:2] берет каждый второй символ из строки с индексом 1, 3 и 5.
Python с нуля. Освойте с Виртуальным ИИ-помощником!
Как узнать последний символ строки в списке?
Подскажите, пожалуйста, как узнать последний символ определенной строки списка. Например, дан список list = [«aaab»,»aade»,»abez»] Как вывести последний символ элемента list[0] , чтобы получилось b То есть мне нужна конструкция по аналогии с Java list[0].charAt(list[0].length()-1)
Отслеживать
задан 22 окт 2019 в 20:06
144 1 1 золотой знак 1 1 серебряный знак 11 11 бронзовых знаков
так: list[0][-1] . PS не используйте зарезервированные слова в качестве имен переменных — после этого вы не сможете восполоьзоваться конструктором list() .
22 окт 2019 в 20:09
Да, list я использовал для примера. Спасибо большое за ответ, пробовал подобный вариант но с -1 не рассмотрел, затупил. А ради интереса, возможно как-то взять элемент отличный от 0 или -1? Ну например из середины
22 окт 2019 в 20:10
Вы можете выбрать любой элемент из списка в диапазоне: [0, len(list_)-1]
22 окт 2019 в 20:17
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Самый простой и красивый способ — обращение по отрицательному индексу, который помогает получать элементы в обратном порядке:
- -1 — последний элемент
- -2 — предпоследний элемент
- .
items = ["aaab", "aade", "abez"] print(items[0][-1]) # b print(items[0][len(items[0]) - 1]) # b for x in items: print(x, x[-1], x[-2], x[-3], x[-4], sep=' | ') # aaab | b | a | a | a # aade | e | d | a | a # abez | z | e | b | a
Python: Извлечение символов из строки
Иногда нужно получить один символ из строки. Например, если сайт знает имя и фамилию пользователя, и в какой-то момент требуется вывести эту информацию в формате A. Ivanov. Для этого компьютеру потребуется взять первый символ из имени. В Python есть подходящая операция, которую мы изучим сегодня.
Представим, что из имени Alexander нужно вывести на экран только первую букву. Это выглядит так:
first_name = 'Alexander' print(first_name[0]) # => A
Операция с квадратными скобками с цифрой извлекает элемент по индексу — позицией символа внутри строки. Индексы начинаются с 0 почти во всех языках программирования. Поэтому, чтобы получить первый символ, нужно указать индекс 0 . Индекс последнего элемента равен длине строки минус единица. Обращение к индексу за пределами строки приведет к ошибке:
# Длина строки 9, поэтому последний индекс — это 8 first_name = 'Alexander' print(first_name[8]) # => r print(first_name[9]) IndexError: string index out of range
Чтобы лучше закрепить новые знания, посмотрите на код ниже и подумайте, что он выдаст:
magic = '\nyou' print(magic[1]) # => ?
Бывают и нестандартные ситуации. Например, нужно вывести элемент из конца, причем из выражения с большим количеством символов. В этом случае можно воспользоваться отрицательным индексом, который облегчит работу программиста.
Допустимо использовать отрицательные индексы. В этом случае идет обращение к символам, начиная с конца строки. -1 — индекс последнего символа, -2 — предпоследнего и так далее. В отличие от прямой индексации, обратный отсчет идет от -1 :
first_name = 'Alexander' print(first_name[-1]) # => r
Индексом может быть не только конкретное число, но и значение переменной. Посмотрите на пример ниже. Здесь мы записали индекс внутри квадратных скобок не числом, а переменной. Такой код приведет к тому же результату — выводу на экран символа A:
first_name = 'Alexander' index = 0 print(first_name[index]) # => A
Чтобы выводить из выражения лишь некоторые символы, не нужно писать большое количество строк кода — достаточно извлечь элемент с помощью индекса. Также можно пользоваться отрицательным индексом, чтобы легче выводить символы с конца выражения. Далее разберемся, как с помощью этих знаний можно извлекать подстроки из строки.
Задание
Выведите на экран последний символ строки, находящейся в переменной name
Упражнение не проходит проверку — что делать?
Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:
- Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.
В моей среде код работает, а здесь нет
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Мой код отличается от решения учителя
Это нормально , в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.
В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Прочитал урок — ничего не понятно
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.
Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.
Определения
- Индекс — позиция символа внутри строки.