Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Чаплыгин А.Н. Учимся програмировать вместе с Пи...doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
3 Мб
Скачать
☆

§7.3. Перебор и цикл for

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

string = "he

llo"

index = 0

while index

< len

s

tring):

letter =

= string

[index]

print le

tter

index =

index

+

1

77

Ревизия: 170

Строки

Данная программа перебирает все символы строки и выводит каждый из них на новой строке. При этом, благодаря строгому неравенству в условии index < len (string), повтор тела цикла завершается на символе с индексом len (string) - 1, который является последним в строке.

Упражнение. Напишите функцию, которая получает в качестве параметра строку и выводит символы, ее составляющие, в обратном порядке.

Выполняя упражнение, вы, вероятно, заметили, что в циклах с индексами нетрудно запутаться. Поэтому в Питоне есть более удобный способ перебора элементов строк (и не только): цикл for. Наша программа будет выглядеть так:

for letter in string: print letter

Данный цикл не завершается до тех пор, пока каждый элемент строки string не будет поочередно присвоен переменной letter, начиная с первого. Такой подход избавляет программиста от необходимости думать над условием завершения цикла, что позволяет ему сосредоточиться на решаемой задаче.

§7.4. Срезы строк

В языках Си и Паскаль индексы позволяют получать доступ к одиночным символам строки, но в Питоне все гораздо интереснее: можно обращаться не только к одиночным символам, но и к целым подстрокам - срезам (по-английски, slices). Смотрите:

>» s = "Peter, Paul,

and Mary"

>» print s [0 :5]

Peter

>» print s [7 :11]

Paul

>» print s [17 :21]

Mary

В общем виде: string [n:m] ,где п указывает индекс начала среза, am- индекс конца среза. При этом начальный и конечный индексы разделяются двоеточием. Обратите также внимание, что символ с индексом m в срез не включается.

Существуют также сокращенные формы оператора построения среза. Если не указать начальный или конечный индекс среза то будет подразумеваться начало или конец строки соответственно:

>» print s [ : 5]

Peter

>» print s [17 : ]

Mary

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

78

Ревизия: 170

Строки

Упражнение. Чему будет соответствовать срез строки s[:J?

Еще одна интересная возможность, которая появилась в интерпретаторе Питона, начиная с версии 2.3. Теперь для оператора индексирования можно указать еще и шаг выбора элементов в срез:

>» print s [ : :2]

Ptr al n ay

Что у нас получилось? Срез состоящий из элементов с четными индексами (если учитывать, что нумерация начинается с нуля)!

Упражнение. Создайте строку длиной 10-15 символов, и извлеките из нее следующие срезы:

  1. Все символы кроме последних четырех;

  2. Символы с индексами кратными трем;

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

Придумайте 2-3 собственных примера.