Введение в язык Питон
773123a3

Основные операторы.


Оператор if.

Если вы знакомы с английским языком, то легко поймёте, что слово if переводится как “если”. Этот оператор выполняет блок кода, следующий после него с отступами, только в случае, если выражение в его заголовке не нуль(т.е. верно).

>>> x = int(raw_input("Введите целое число: ")) >>> if x < 0: ... x = 0 ... print 'Отрицательное число стало нулём' ... elif x == 0: ... print 'Это число - нуль' ... elif x == 1: ... print 'Это число - 1' ... else: ... print `Это число больше единицы' ...

Далее могут быть ещё операторы elif(аналог case в Си). Оператору if, как видно, сопутствуют операторы else(“иначе” - блок кода выполняется если условие в заголовке if приняло нулевое значение, т.е стало ложным) и elif(“иначе если” - блок кода выполняется если условие в заголовке if приняло нулевое значение, т.е стало ложным, а значение в заголовке данного оператора стало ненулевым, т.е истинным).

Оператор for.

Оператор for несколько необычен в Питоне, он имеет вид for некая_переменная in некий_диапазон. Блок кода после заголовка выполняется, пока некая_переменная принадлежит некому_диапазону(причём этот диапазон может быть списком, числовой последовательностью, массивом каких-либо значений):

>>> # Определим какие-то строки: ... a = ['Linux', 'Open', 'Office'] >>> for x in a: ... print x, len(x)

Результат работы:

Linux 5

Open 4

Office 6

Довольно опасно менять в теле цикла for значение диапазона(это может повлечь весьма странную его работу, зацикливание и усложняет понимание программы), кроме случаев, когда в роли диапазона выступает список. В этом случае, можно сделать простое копирование списков, удвоение элементов в списке:

>>> for x in a[:]: # здесь мы делаем копию всего списка a в переменной x ... if len(x) > 6: a.insert(0, x)#Если длина строки списка больше 6 ...



>>> a

Результат работы: [Linux , Open, Office, Office]

Для задания диапазона в форме арифметической прогрессии (1 2 3 4 5 6...) удобно пользоваться функцией range().
Она имеет три формы, рассмотрим на примерах все:

>>> range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Эта форма возвращает все целые числа в диапазоне от 0 до числа 10, не включая само число 10.

>>> range(5, 10) [5, 6, 7, 8, 9]

Эта форма возвращает все целые числа в диапазоне от 5 до числа 10, не включая само число 10, но включая начальное число 5.

>>> range(0, 10, 3) [0, 3, 6, 9]

>>> range(-10, -100, -30) [-10, -40, -70]

Эта форма возвращает все целые значения в диапазоне от начального до конечного с шагом, заданным третьим параметром. Причём, если, например, вы попробуете ввести range(1, 100, -1), то очевидно, что чисел в этом диапазоне нет, то есть результатом будет пустое множество([]).

Если вы хотите задать диапазон через количество элементов в списке, то следует воспользоваться функцией range в сочетании с функцией len:

>>> a = [`Linux', 'is', 'the', 'best', 'system'] >>> for i in range(len(a)): ... print i, a[i]#Обращение к элементу списка по его индексу ...

0 Linux

1 is

2 the

3 best

4 system

Прерывание и продолжение циклов for и while.

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

>>> for n in range(2, 10):#Задаёт верхнюю границу

... for x in range(2, n): ... if n % x == 0:#Если n делится на x без остатка и n не простое число ... print n, 'равно', x, '*', n/x ... break#Выход из цикла по x, следующее n ... else: ... # если n не разделилось без остатка ни на одно x от 2 до n, то ... print n, 'простое число' ...

Результат работы: 2 простое число

3 простое число

4 равно 2 * 2

5 простое число

6 равно 2 * 3

7 простое число

8 равно 2 * 4

9 равно 3 * 3

Оператор pass.

pass означает, что не надо выполнять никаких действий.Этот оператор может использоваться, когда наличие какого-либо кода необходимо синтаксически, но не нужно по логике работы программы:

>>> while 1: ... pass # Бесконечный цикл, ничего не делающий: ждём прерывания с клавиатуры ...


Содержание раздела