Стоит заметить, что 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
следующим примером:
Читать дальше
Конец ознакомительного отрывка
Купить книгу