>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)