Skip to content

Latest commit

 

History

History
152 lines (101 loc) · 11.2 KB

File metadata and controls

152 lines (101 loc) · 11.2 KB

Урок 6. Индексы и срезы строк

6.1 Индексы в строке

Строка - последовательность символов, заключенных в одинарные или двойные кавычки.

Каждый символ строки имеет свой уникальный, порядковый номер. Эти номера называются индексами.

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

Индексы начинаются с 0 для первого символа, 1 для второго символа и так далее.

Отрицательные индексы могут быть использованы для обращения к символам с конца строки, где -1 обозначает последний символ, -2 обозначает предпоследний символ и так далее.

my_string = "Hello, World!"
first_char = my_string[0]  # Получаем первый символ "H"
last_char = my_string[-1]  # Получаем последний символ "!"
print(first_char)
print(last_char)

Если вы попытаетесь обратиться к несуществующему индексу строки в Python, возникнет ошибка IndexError. Это происходит, когда индекс находится за пределами допустимого диапазона индексов строки.

my_string = "Hello, World!"
invalid_index = my_string[100]  # Попытка получить символ с несуществующим индексом

6.2 Подстроки. Срезы.

Подстрока - это часть строки, которая состоит из последовательности символов.

Подстрока может быть получена путем выбора определенного диапазона символов из исходной строки.

Для выделения подстроки в Python можно использовать срезы строк.

Срезы строк позволяют получать подстроки из исходной строки.

Синтаксис срезов состоит из использования квадратных скобок и двоеточия.

Синтаксис срезов:

string[start:stop:step]

start - индекс, с которого начинается срез (включительно).
stop - индекс, на котором заканчивается срез (не включается).
step - шаг, определяющий, какие символы будут включены в срез.

Срезы строк включают:

  • начальный индекс(start),
  • конечный индекс(stop),
  • шаг(step).

Пример использования срезов:

main_string = "Python is fun!"
substring = main_string[0:6]  # Получаем подстроку "Python"
substring2 = main_string[7:]  # Получаем подстроку "is fun!"
substring3 = main_string[:6]  # Получаем подстроку "Python"
substring4 = main_string[::2]  # Получаем подстроку "Pto sfn"

6.3 Отрицательный шаг в срезах.

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

Например:

main_string = "Привет, мир!"
reversed_string = main_string[::-1]  # Получаем строку в обратном порядке "!рим ,тевирП"
substring1 = main_string[4:1:-1]  # Получаем подстроку "еви"
substring2 = main_string[::-2] # Получаем каждый второй символ в обратном порядке
substring3 = main_string[1:4:-1] # Получаем пустую строку
print("reversed_string: ", reversed_string)
print("substring1: ", substring1)
print("substring2: ", substring2)
print("substring3: ", substring3)

6.4 Почему main_string[4:1:-1]?

Отрицательный шаг в срезах указывает направление обхода символов строки.

В данном случае, main_string[4:1:-1] означает, что мы начинаем с индекса 4 (символ "е"), заканчиваем на индексе 1 (символ "и") и двигаемся с шагом -1 (в обратном направлении). Мы получаем подстроку "ети".

Если бы мы использовали main_string[1:4:-1], то начальный индекс (1) был бы меньше конечного индекса (4), что противоречит направлению обхода. В результате получилась пустая строка.

Таким образом, срезы всегда должны образовывать диапозон значений.

6.5 Изменение строк.

Cтроки являются неизменяемым типом данных, что означает, что непосредственное изменение строки невозможно.

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

main_string = "Hello World!" # Длина строки - 12 символов, т.е. последний символ имеет индекс "11"
main_string[11] = "?" # Ошибка
main_string[12] = "!" # Ошибка

Чтобы изменить строку, нужно создать новую строку с другим содержимым:

main_string = "Hello World!"
second_string = main_string[:-1] + "?"
print(main_string)
print(second_string)

Вопросы:

  1. Что такое индекс в строке и как он используется в Python?
  2. Как можно извлечь подстроку из строки с помощью срезов?
  3. Что произойдет, если вы попытаетесь получить символ строки по индексу, который выходит за пределы длины строки?
  4. Какой результат будет у выражения main_string[2:5], если main_string = "Привет, мир!"?
  5. Как использовать отрицательные индексы для доступа к символам строки?
  6. Что такое шаг в срезах и как он влияет на результат?
  7. Какой результат будет у выражения main_string[::-1]?
  8. Объясните, почему выражение main_string[4:1:-1] возвращает определенную подстроку, а main_string[1:4:-1] вернет пустую строку. Как это работает?
  9. Как можно использовать срезы для удаления части строки?
  10. Как можно изменить строку, используя индексы и срезы?

Задачи:

  1. Напишите программу, которая принимает строку от пользователя. Прочитайте эту строку и отобразите на экране ее первый и последний символ подряд в одну строчку. Пример входных данных: "Я люблю Python".

  2. Напишите программу, которая принимает строку от пользователя. Прочитайте эту строку и отобразите первые четыре ее символа. Полагается, что строка гарантированно имеет длину не менее четырех символов. Пример входных данных: "Я люблю программирование".

  3. Напишите программу, которая принимает строку от пользователя. Прочитайте эту строку и отобразите последние три ее символа. Полагается, что строка гарантированно имеет длину не менее трех символов. Пример входных данных: "Я люблю Академию Top".

  4. Напишите программу, которая принимает строку от пользователя. Прочитайте ее и отобразите все ее символы с нечетными индексами. Пример входных данных: "Программирование".

  5. Напишите код, который проверяет, содержится ли подстрока "Python" в строке вводимой пользователем. Если подстрока есть в строке вводимой пользователем, вывести на экран True, в противном случае вывести на экран False. Пример входных данных: "Изучаем Python и программируем".

  6. Напишите программу, которая принимает строку и удаляет из нее первые три символа, используя срезы. Выведите результат на экран.

  7. Напишите программу, которая принимает две строки от пользователя. Прочитайте их и из первой строки выделите все символы с четными индексами, а из второй - с нечетными. Объедините полученные строки через пробел и выведите результирующую строку на экран. Пример входных данных: "Изучаем Python", "программируем".

  8. Напишите программу, которая принимает строку от пользователя. Необходимо ее прочитать и отобразить первые пять символов в обратном порядке. Полагается, что введенная строка имеет минимум пять символов.

  9. Напишите программу, которая принимает строку от пользователя. Длина первого слова меньше второго. Необходимо обрезать второе слово до длины первого и вывести на экран.


Предыдущий урок | Следующий урок