- •§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.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 символов, и извлеките из нее следующие срезы:
Все символы кроме последних четырех;
Символы с индексами кратными трем;
Все символы строки с четными индексами за исключением первых четырех и последних пяти.
Придумайте 2-3 собственных примера.
