×
Traktatov.net » Язык программирования Python » Читать онлайн
Страница 3 из 141 Настройки

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