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

§7.7. Функция find

Рассмотрим такую функцию:

de

f

find(s index

tr, = 0

ch) :

while

index < len

(str)

:

if

str

[index]

== с

h:

re

turn index

in

dex

= index

+ 1

return

-1

Что она делает? В некоторым смысле функция find() противоположна оператору индексирования [ ]. Отличие состоит в том, что вместо того, чтобы извлекать из строки символ по его индексу, она возвращает индекс первого вхождения символа в строке. Если символ не найден, то функция возвращает -1.

Это первый пример использования инструкции return внутри цикла. Если условие str [index] == ch, то функция возвращает значение немедленно, прерывая цикл преждевременно.

Если символ не появился в строке, то программа выходит из цикла «в штатном режиме» и возвращает -1.

Упражнение. Измените код функции find () так, чтобы требовался третий параметр - индекс в строке, начиная с которого должен производиться поиск. Не забудьте про обработку ситуаций с некорректными и предельными значениями этого параметра (например, когда указанный индекс выходит за диапазон допустимых значений).

80

Ревизия: 170

Строки

§7.8. Циклы и счётчики

Следующая программа считает количество символов, встречающихся в строке:

fruit = "banana"

count = 0

for char in fruit:

if char == 'a':

count = count +

1

print count

Программа демонстрирует интересный пример использования циклов. Переменная count инициализируется со значением 0 и затем инкрементируется16 каждый раз когда символ а найден. Когда происходит выход из цикла, переменная count содержит результат -количество символов а. Переменные, в которых сохраняется количество элементов в процессе их перебора, удовлетворяющих некоторому условию, называют счетчиками.

Упражнение. Создайте на основе кода примера функцию countLetters и обобщите ее так, чтобы она принимала строку и искомый символ в качестве параметров.

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