- •§0.1. Базовые знания
- •§0.2. Где достать интерпретатор языка Питон?
- •§0.3. Установка интерпретатора языка Питон в unix
- •§0.3.1. Установка/обновление Питона из грт-пакета
- •§0.3.2. Установка Питона из исходного кода
- •§0.4. Установка Питона в ос Windows
- •§0.5. Запуск программ, написанных на Питоне
- •§0.6. Среда разработки
- •§1.1. Алгоритмы и программы
- •§1.2. Языки программирования и уровни абстракции
- •Глава 1. Базовые понятия
- •§1.3. Формальные и естественные языки
- •§1.4. Интерпретаторы и компиляторы
- •§1.5. Первая программа
- •§1.6. Что такое отладка?
- •§1.6.1. Синтаксические ошибки (syntax errors)
- •§1.6.2. Ошибки выполнения (runtime errors)
- •§1.6.3. Семантические ошибки (semantic errors)
- •§1.6.4. Процесс отладки
- •Глава 2. Переменные, операции и выражения
- •§2.1. Значения и типы
- •§2.2. Преобразование типов
- •§2.3. Переменные
- •§2.4. Имена переменных и ключевые слова
- •§2.5. Выражения
- •§2.6. Выполнение выражений
- •§2.7. Операторы и операнды
- •§2.8. Порядок операций
- •§2.9. Простейшие операции над строками
- •§2.10. Композиция
- •Глава 3. Функции §3.1. Подпрограммы
- •§3.2. Вызовы функций
- •§3.3. Справочная система
- •§3.4. Импорт модулей и математические функции
- •§3.5. Композиция
- •§3.6. Создание функций
- •§3.7. Параметры и аргументы
- •§3.8. Локальные переменные
- •§3.9. Поток выполнения
- •§3.10. Стековые диаграммы
- •§3.11. Функции, возвращающие результат
- •Глава 4. Компьютерная графика
- •Глава 5. Логические выражения, условия и рекурсия §5.1. Комментарии в программах
- •§5.2. Простые логические выражения и логический тип данных
- •§5.3. Логические операторы
- •§5.4. Выполнение по условию и «пустота»
- •§5.5. Ввод данных с клавиатуры
- •§5.6. Альтернативные ветки программы (Chained conditionals)
- •§5.7. Пустые блоки
- •§5.8. Вложенные условные операторы (Nested conditionals)
- •§5.9. Рекурсия
- •§5.10. Стековые диаграммы рекурсивных вызовов
- •§5.11. Максимальная глубина рекурсии
- •§5.12. Числа Фибоначчи
- •Глава 6. Циклы
- •§6.1. Оператор цикла while
- •§6.2. Счетчики
- •§6.3. Бесконечные циклы
- •§6.4. Альтернативная ветка цикла while
- •§6.5. Табулирование функций
- •§6.6. Специальные и экранируемые символы
- •§6.7. Числа Фибоначчи и оператор цикла while
- •§6.8. Вложенные операторы цикла и двумерные таблицы
- •§6.9. Классификация операторов цикла
- •§6.10. Управляющие структуры
- •Глава 7. Строки
- •§7.1. Оператор индексирования
- •§7.2. Длина строки и отрицательные индексы
- •§7.3. Перебор и цикл for
- •§7.4. Срезы строк
- •§7.5. Сравнение строк
- •§7.6. Строки нельзя изменить
- •§7.7. Функция find
- •§7.8. Циклы и счётчики
- •§7.9. Модуль string
- •§7.10. Классификация символов
- •§10.2. Операции над словарями
- •§10.3. Методы словарей
- •§10.4. Использование псевдонимов и копирование
- •§10.5. Разряженные матрицы
- •§10.6. Подсказки
- •§10.7. Тип «длинное целое число»
- •§10.8. Подсчет букв
§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 с тремя параметрами, которую вы написали выполняя упражнение из предыдущего параграфа.
