Чтение онлайн

на главную - закладки

Жанры

Язык программирования Python
Шрифт:

Основные алгоритмические конструкции

Предполагается, что слушатели уже умеют программировать хотя бы на уровне школьной программы, и потому вполне достаточно провести параллели между алгоритмическими конструкциями и синтаксисом Python. Кроме того, Python как правило не подводит интуицию программиста (по крайней мере, науке хорошо известны типичные ловушки начинающих программистов на Python), поэтому изучать синтаксис Python предпочтительнее на примерах, а не с помощью синтаксических диаграмм или форм Бэкуса–Наура.

Последовательность операторов

Последовательные

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

Листинг

a = 1

b = 2

a = a + b

b = a — b

a = a — b

print a, b

Что делает этот пример? Проверить свою догадку можно с помощью интерактивного режима интерпретатора Python.

При работе с Python в интерактивном режиме как бы вводится одна большая программа, состоящая из последовательных действий. В примере выше использованы операторы присваивания и оператор print.

Оператор условия и выбора

Разумеется, одними только последовательными действиями в программировании не обойтись, поэтому при написании алгоритмов используется еще и ветвление:

Листинг

if a > b:

c = a

else:

c = b

Этот кусок кода на Python интуитивно понятен каждому, кто помнит, что if по–английски значит «если», а else — «иначе». Оператор ветвления имеет в данном случае две части, операторы каждой из которых записываются с отступом вправо относительно оператора ветвления. Более общий случай — оператор выбора — можно записать с помощью следующего синтаксиса (пример вычисления знака числа):

Листинг

if a < 0:

s = -1

elif a == 0:

s = 0

else:

s = 1

Стоит заметить, что elif — это сокращенный else if. Без сокращения пришлось бы применять вложенный оператор ветвления:

Листинг

if a < 0:

s = -1

else:

if a == 0:

s = 0

else:

s = 1

В отличие от оператора print, оператор if–else — составной оператор.

Циклы

Третьей необходимой алгоритмической конструкцией является цикл. С помощью цикла можно описать повторяющиеся действия. В Python имеются два вида циклов: цикл ПОКА (выполняется некоторое действие) и цикл ДЛЯ (всех значений последовательности). Следующий пример иллюстрирует цикл ПОКА на Python:

Листинг

s = «abcdefghijklmnop»

while s != "":

print s

s = s[1: — 1]

Оператор while говорит интерпретатору Python: «пока верно условие цикла, выполнять тело цикла». В языке Python тело цикла выделяется отступом. Каждое исполнение тела цикла будет называться итерацией. В приведенном примере убирается первый и последний символ строки до тех пор, пока не останется пустая строка.

Для большей гибкости при организации циклов применяются операторы break (прервать) и continue (продолжить). Первый позволяет прервать цикл, а второй — продолжить цикл, перейдя к следующей итерации (если, конечно, выполняется условие цикла).

Следующий пример читает строки из файла и выводит те, у которых длина больше 5:

Листинг

f = open(«file.txt», «r»)

while 1:

l = f.readline

if not l:

break

if len(l) > 5:

print l,

f.close

В

этом примере организован бесконечный цикл, который прерывается только при получении из файла пустой строки (l), что обозначает конец файла.

В языке Python логическое значение несет каждый объект: нули, пустые строки и последовательности, специальный объект None и логический литерал False имеют значение «ложь», а прочие объекты значение «истина». Для обозначения истины обычно используется 1 или True.

Примечание:

Литералы True и False для обозначения логических значений появились в Python 2.3.

Цикл ДЛЯ выполняет тело цикла для каждого элемента последовательности. В следующем примере выводится таблица умножения:

Листинг

for i in range(1, 10):

for j in range(1, 10):

print "%2i» % (i*j),

print

Здесь циклы for являются вложенными. Функция range порождает список целых чисел из полуоткрытого диапазона [1, 10). Перед каждой итерацией счетчик цикла получает очередное значение из этого списка. Полуоткрытые диапазоны общеприняты в Python. Считается, что их использование более удобно и вызывает меньше программистских ошибок. Например, range(len(s)) порождает список индексов для списка s (в Python–последовательности первый элемент имеет индекс 0). Для красивого вывода таблицы умножения применена операция форматирования % (для целых чисел тот же символ используется для обозначения операции взятия остатка от деления). Строка форматирования (задается слева) строится почти как строка форматирования для printf из C.

Функции

Программист может определять собственные функции двумя способами: с помощью оператора def или прямо в выражении, посредством lambda. Второй способ (да и вообще работа с функциями) будет рассмотрен подробнее в лекции по функциональному программированию на Python, а здесь следует привести пример определения и вызова функции:

Листинг

def cena(rub, kop=0):

return "%i руб. %i коп.» % (rub, kop)

print cena(8, 50)

print cena(7)

print cena(rub=23, kop=70)

В этом примере определена функция двух аргументов (из которых второй имеет значение по умолчанию — 0). Вариантов вызова этой функции с конкретными параметрами также несколько. Стоит только заметить, что при вызове функции сначала должны идти позиционные параметры, а затем, именованные. Аргументы со значениями по умолчанию должны следовать после обычных аргументов. Оператор return возвращает значение функции. Из функции можно возвратить только один объект , но он может быть кортежем из нескольких объектов.

После оператора def имя cena оказывается связанным с функциональным объектом.

Исключения

В современных программах передача управления происходит не всегда так гладко, как в описанных выше конструкциях. Для обработки особых ситуаций (таких как деление на ноль или попытка чтения из несуществующего файла) применяется механизм исключений. Лучше всего пояснить синтаксис оператора try–except следующим примером:

Листинг

try:

res = int(open('a.txt').read) / int(open('c.txt').read)

Поделиться:
Популярные книги

Искатель Смерти

Грин Саймон
1. Охотник за смертью
Фантастика:
героическая фантастика
6.20
рейтинг книги
Искатель Смерти

Цивилизация статуса (сборник)

Шекли Роберт
Сборники Роберта Шекли
Фантастика:
фэнтези
8.22
рейтинг книги
Цивилизация статуса (сборник)

Марфа-посадница

Балашов Дмитрий Михайлович
Проза:
историческая проза
7.33
рейтинг книги
Марфа-посадница

Барон Бранд Берс. Том 2

Limonad
2. Бранд Берс
Проза:
магический реализм
5.00
рейтинг книги
Барон Бранд Берс. Том 2

Изгой. Трилогия

Михайлов Дем Алексеевич
Изгой
Фантастика:
фэнтези
8.45
рейтинг книги
Изгой. Трилогия

Темный ангел

Боумен Салли
Любовные романы:
современные любовные романы
5.75
рейтинг книги
Темный ангел

Технология XSLT

Валиков Алексей Н.
Компьютеры и Интернет:
программирование
5.00
рейтинг книги
Технология XSLT

Записные книжки. Воспоминания. Эссе

Гинзбург Лидия Яковлевна
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Записные книжки. Воспоминания. Эссе

Светоносец. Трилогия

Джонсон Оливер
Светоносец
Фантастика:
фэнтези
5.00
рейтинг книги
Светоносец. Трилогия

Посланник

Иевлев Геннадий Васильевич
2. Страж
Фантастика:
научная фантастика
космическая фантастика
5.00
рейтинг книги
Посланник

Игра с огнем

Джейн Анна
2. Мой идеальный смерч
Любовные романы:
современные любовные романы
9.51
рейтинг книги
Игра с огнем

Натюрморт с воронами

Престон Дуглас
4. Пендергаст
Фантастика:
ужасы и мистика
9.37
рейтинг книги
Натюрморт с воронами

Турнир

Скиба Николай
7. Зверолов
Фантастика:
фэнтези
рпг
уся
фантастика: прочее
попаданцы
6.00
рейтинг книги
Турнир

Скрытая Империя

Андерсон Кевин Джей
1. Сага Семи Солнц
Фантастика:
научная фантастика
6.25
рейтинг книги
Скрытая Империя