Файл: Книга на вашем родном языке 6 2 Переводы 7 1 Доступные переводы переводы 7 3 Предисловие 16.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 10.01.2024

Просмотров: 232

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

A Byte of Python (Russian), Версия 2.02
Далее мы добавляем
1
к значению, хранящемуся в i
и сохраняем его там. По- сле этого мы печатаем его и получаем значение
6
, что неудивительно.
Аналогичным образом мы присваиваем строковую константу переменной s
,
после чего печатаем её.
Замечание для программистов на статических языках программирования
Переменные используются простым присваиванием им значений. Никакого предвари- тельного объявления или определения типа данных не требуется/применяется.
7.9 Логические и физические строки
Физическая строка – это то, что вы видите, когда набираете программу. Логическая стро- ка – это то, что Python видит как единое предложение. Python неявно предполагает, что каждой физической строке соответствует логическая строка.
Примером логической строки может служить предложение print('Привет, Мир!')

если оно на одной строке (как вы видите это в редакторе), то эта строка также соответ- ствует физической строке.
Python неявно стимулирует использование по одному предложению на строку, что об- легчает чтение кода.
Чтобы записать более одной логической строки на одной физической строке, вам придёт- ся явно указать это при помощи точки с запятой (
;
), которая отмечает конец логической строки/предложения. Например,
i
=
5
print
(i)
то же самое, что i
=
5
;
print
(i);
и то же самое может быть записано в виде i
=
5
;
print
(i);
или даже i
=
5
;
print
(i)
7.9. Логические и физические строки
43

A Byte of Python (Russian), Версия 2.02
Однако я настоятельно рекомендую вам придерживаться написания одной логической
строки в каждой физической строке. Таким образом вы можете обойтись совсем без точ- ки с запятой. Кстати, я никогда не использовал и даже не встречал точки с запятой в про- граммах на Python.
Можно использовать более одной физической строки для логической строки, но к этому следует прибегать лишь в случае очень длинных строк. Пример написания одной логиче- ской строки, занимающей несколько физических строк, приведён ниже. Это называется
явным объединением строк.
s
=
'Это строка.
\
Это строка продолжается.'
print
(s)
Это даст результат:
Это строка
Это строка продолжается
Аналогично,
print
\
(i)
то же самое, что и print
(i)
Иногда имеет место неявное подразумевание, когда использование обратной косой чер- ты не обязательно. Это относится к случаям, когда в логической строке есть открываю- щаяся круглая, квадратная или фигурная скобка, но нет закрывающейся. Это называется
неявным объединением строк. Вы сможете увидеть это в действии в программах с ис- пользованием
списков
в дальнейших главах.
7.10 Отступы
В Python пробелы важны. Точнее, пробелы в начале строки важны. Это называется от-
ступами. Передние отступы (пробелы и табуляции) в начале логической строки исполь- зуются для определения уровня отступа логической строки, который, в свою очередь, ис- пользуется для группировки предложений.
Это означает, что предложения, идущие вместе, должны иметь одинаковый отступ. Каж- дый такой набор предложений называется блоком. В дальнейших главах мы увидим при- меры того, насколько важны блоки.
Вы должны запомнить, что неправильные отступы могут приводить к возникновению ошибок. Например:
7.10. Отступы
44


A Byte of Python (Russian), Версия 2.02
i
=
5
print
(
'Значение составляет '
, i)
# Ошибка! Пробел в начале строки
print
(
'Я повторяю, значение составляет '
, i)
Когда вы запустите это, вы получите следующую ошибку:
File "whitespace.py", line 4
print('Значение составляет ', i) # Ошибка! Пробел в начале строки
^
IndentationError: unexpected indent
Обратите внимание на то, что в начале второй строки есть один пробел. Ошибка, отобра- жённая Python, говорит нам о том, что синтаксис программы неверен, т.е. программа не была написана по правилам. Для вас же это означает, что вы не можете начинать новые
блоки предложений где попало (кроме основного блока по умолчанию, который использу- ется на протяжении всей программы, конечно). Случаи, в которых вы можете использо- вать новые блоки, будут подробно описаны в дальнейших главах, как например, в
главе
«Поток команд»
1   2   3   4   5   6   7   8   9   ...   14

Как отступать
Не смешивайте пробелы и символы табуляции в отступах, поскольку не на всех плат- формах это работает корректно. Я настоятельно рекомендую вам использовать одиночную
табуляцию или четыре пробела для каждого уровня отступа.
Выберите какой-нибудь один из этих стилей отступа. Но что ещё более важно, это ис- пользовать выбранный стиль постоянно, а также соблюдать стиль редактируемых вами файлов. Т.е. когда вы пишете новый файл, используйте только один ваш любимый стиль,
а если в редактируемом вами файле для отступов уже используются, скажем, символы та- буляции, то и вы используйте в этом файле символы табуляции для отступов.
Хорошие редакторы, такие как Komodo Edit, будут делать это автоматически.
Замечание для программистов на статических языках программирования
Python всегда будет использовать отступы для выделения блоков и никогда не будет ис- пользовать скобки. Введите from __future__ import braces
, чтобы узнать больше.
7.10. Отступы
45

A Byte of Python (Russian), Версия 2.02 7.11 Резюме
Теперь, когда мы прошли через множество жизненно важных мелочей, можно перейти к более интересным вещам – таким как управляющие конструкции. Но сначала как следует освойтесь с прочитанным в настоящей главе.
7.11. Резюме
46

Операторы и выражения
Большинство предложений (логических строк) в программах содержат выражения. Про- стой пример выражения:
2 + 3
. Выражение можно разделить на операторы и операнды.
Операторы – это некий функционал, производящий какие-либо действия, который мо- жет быть представлен в виде символов, как например
+
, или специальных зарезервиро- ванных слов. Операторы могут производить некоторые действия над данными, и эти дан- ные называются операндами. В нашем случае
2
и
3
– это операнды.
8.1 Операторы
Кратко рассмотрим операторы и их применение:
Обратите внимание, вычислить значения выражений, данных в примерах, можно так- же используя интерпретатор интерактивно. Например, для проверки выражения
2 + 3
воспользуйтесь интерактивной командной строкой интерпретатора Python:
>>>
2
+
3 5
>>>
3
*
5 15
Операторы и их применение
Оператор
Название
Объяснение
Примеры
+
Сложение Суммирует два объекта
3 + 5
даст
8
;
'a' + 'b'
даст 'ab'
-
Вычита- ние
Даёт разность двух чисел; если первый операнд отсутствует, он считается равным нулю
-5.2
даст отрицательное число, а
50 -
24
даст
26 47

A Byte of Python (Russian), Версия 2.02
Оператор
Название
Объяснение
Примеры
*
Умноже- ние
Даёт произведение двух чисел или возвращает строку,
повторённую заданное число раз.
2 * 3
даст
6
'la' * 3
даст 'lalala'
**
Возведе- ние в степень
Возвращает число х
,
возведённое в степень y
3 ** 4
даст
81
(т.е.
3 * 3 * 3 * 3
)
/
Деление
Возвращает частное от деления x
на y
4 / 3
даст
1.3333333333333333
//
Целочис- ленное деление
Возвращает неполное частное от деления
4 // 3
даст
1
-4 // 3
даст
-2
%
Деление по модулю
Возвращает остаток от деления
8 % 3
даст
2
-25.5 % 2.25
даст
1.5
<<
Сдвиг влево
Сдвигает биты числа влево на заданное количество позиций.
(Любое число в памяти компьютера представлено в виде битов - или двоичных чисел, т.е. 0 и 1)
2 << 2
даст
8
. В двоичном виде
2
представляет собой
10
. Сдвиг влево на 2
бита даёт
1000
, что в десятичном виде означает
8
>>
Сдвиг вправо
Сдвигает биты числа вправо на заданное число позиций.
11 >> 1
даст
5
. В двоичном виде
11
представляется как
1011
, что будучи смещённым на 1 бит вправо, даёт
101
, а это, в свою очередь, не что иное как десятичное
5
&
Побито- вое
И
Побитовая операция И над числами
5 & 3
даёт
1
8.1. Операторы
48

A Byte of Python (Russian), Версия 2.02
Оператор
Название
Объяснение
Примеры
|
Побито- вое
ИЛИ
Побитовая операция ИЛИ
над числами
5 | 3
даёт
7
^
Побито- вое
ИСКЛЮ-
ЧИТЕЛЬ-
НО
ИЛИ
Побитовая операция ИС-
КЛЮЧИТЕЛЬНО
ИЛИ
5 ^ 3
даёт
6

Побито- вое
НЕ
Побитовая операция НЕ
для числа x
соответствует
-(x+1)
5
даёт
-6
<
Меньше
Определяет,
верно ли, что x
меньше y
. Все операторы сравнения возвращают
True или
False
1
Обратите внимание на заглавные буквы в этих словах.
5 < 3
даст
False
,
а
3 < 5
даст
True
Можно составлять произвольные цепочки сравнений:
3 < 5 < 7
даёт
True
>
Больше
Определяет,
верно ли, что x
больше y
5 > 3
даёт
True
. Если оба операнда - числа, то перед сравнением они оба преобразуются к одинаковому типу. В
противном случае всегда возвращается
False
<=
Меньше или равно
Определяет,
верно ли, что x
меньше или равно y
x = 3; y = 6; x <= y даёт
True
>=
Больше или равно
Определяет,
верно ли, что x
больше или равно y
x = 4; y = 3; x >= 3
даёт
True
8.1. Операторы
49

A Byte of Python (Russian), Версия 2.02
Оператор
Название
Объяснение
Примеры
==
Равно
Проверяет,
одинаковы ли объекты x = 2; y = 2; x == y даёт
True x =
'str'; y = 'stR'; x == y даёт
False x = 'str'; y = 'str'; x == y даёт
True
!=
Не равно
Проверяет,
верно ли, что объекты не равны x = 2; y = 3; x != y даёт
True not
Логиче- ское
НЕ
Если x
равно
True
, оператор вернёт
False
Если же x
равно
False
, получим
True x = True; not x даёт
False and
Логиче- ское
И
x and y даёт
False
, если x
равно
False
, в противном случае возвращает значение y
x = False; y = True; x and y возвращает
False
, поскольку x равно
False
. В этом случае Python не станет проверять значение y
, так как уже знает,
что левая часть выражения „and“
равняется
False
, что подразумевает, что и всё выражение в целом будет равно
False
, независимо от значений всех остальных операндов. Это называется укороченной оценкой булевых
(логических) выражений.
or
Логиче- ское
ИЛИ
Если x
равно
True
, в результате получим
True
, в противном случае получим значение y
x = True; y = False; x or y даёт
True
. Здесь также может производиться укороченная оценка выражений.
1
«True» - англ. «Верно (Правда)»; «False» - англ. «Ошибочно (Ложь)». (прим. перев.)
8.1. Операторы
50

A Byte of Python (Russian), Версия 2.02 8.1.1 Краткая запись мат. операций и присваивания
Зачастую результат проведения некой математической операции необходимо присвоить переменной, над которой эта операция производилась. Для этого существуют краткие формы записи выражений:
Вы можете записать:
a
=
2
; a
=
a
*
3
в виде:
a
=
2
; a
*=
3
Обратите внимание, что выражения вида «
переменная = переменная операция выражение
» принимает вид «
переменная операция = выражение
».
8.2 Порядок вычисления
Если имеется выражение вида
2 + 3 * 4
, что производится раньше: сложение или умно- жение? Школьный курс математики говорит нам, что умножение должно производиться в первую очередь. Это означает, что оператор умножения имеет более высокий приори- тет, чем оператор сложения.
Следующая таблица показывает приоритет операторов в Python, начиная с самого низ- кого (самое слабое связывание) и до самого высокого (самое сильное связывание). Это означает, что в любом выражении Python сперва вычисляет операторы и выражения, рас- положенные внизу таблицы, а затем операторы выше по таблице.
Эта таблица взята из
Справочника по языку Python (англ.)
и приводится здесь для пол- ноты описания. На практике лучше использовать скобки для группировки операторов и операндов, чтобы в явном виде указать порядок вычисления выражений. Заодно это об- легчит чтение программы. Более подробно см. в разделе
Изменение порядка вычисления
ниже.
8.2. Порядок вычисления
51

A Byte of Python (Russian), Версия 2.02
Приоритет операторов
Оператор
Описание lambda лямбда-выражение or
Логическое «ИЛИ»
and
Логическое «И»
not x
Логическое «НЕ»
in
,
not in
Проверка принадлежности is
,
is not
Проверка тождественности
<
,
<=
,
>
,
>=
,
!=
,
==
Сравнения
|
Побитовое «ИЛИ»
^
Побитовое «ИСКЛЮЧИТЕЛЬНО ИЛИ»
&
Побитовое «И»
<<
,
>>
Сдвиги
+
,
-
Сложение и вычитание
*
,
/
,
//
,
%
Умножение, деление, целочисленное деление и остаток от де- ления
+x
,
-x
Положительное, отрицательное
x
Побитовое НЕ
**
Возведение в степень x.attribute
Ссылка на атрибут x[индекс]
Обращение по индексу x[индекс1:индекс2]
Вырезка f(аргументы ...)
Вызов функции
(выражения, ...)
Связка или кортеж
2
[выражения, ...]
Список
{ключ:данные,
...}
Словарь
Операторы, о которых мы не упомянули, будут объяснены в дальнейших главах.
В этой таблице операторы с равным приоритетом расположены в одной строке. Напри- мер,
+
и
- имеют равный приоритет.
2
«tuple» - англ. «кортеж» (прим. перев.)
8.2. Порядок вычисления
52

A Byte of Python (Russian), Версия 2.02 8.3 Изменение порядка вычисления
Для облегчения чтения выражений можно использовать скобки. Например,
2 + (3 * 4)
определённо легче понять, чем
2 + 3 * 4
, которое требует знания приоритета операто- ров. Как и всё остальное, скобки нужно использовать разумно (не перестарайтесь) и избе- гать излишних, как в
(2 + (3 * 4))
Есть ещё одно преимущество в использовании скобок – они дают возможность изме- нить порядок вычисления выражений. Например, если сложение необходимо произвести прежде умножения, можно записать нечто вроде
(2 + 3) * 4 8.4 Ассоциативность
Операторы обычно обрабатываются слева направо. Это означает, что операторы с равным приоритетом будут обработаны по порядку от левого до правого. Например,
2 + 3 + 4
обрабатывается как
(2 + 3) + 4 8.5 Выражения
Пример (сохраните как expression.py
):
length
=
5
breadth
=
2
area
=
length
*
breadth print
(
'Площадь равна'
, area)
print
(
'Периметр равен'
,
2
*
(length
+
breadth))
Вывод:
$ python expression.py
Площадь равна 10
Периметр равен 14
Как это работает:
Длина и ширина прямоугольника хранятся в переменных length и
breadth соответственно. Мы используем их для вычисления периметра и площади прямоугольника при помощи выражений. Результат выражения length *
breadth сохраняется в переменной area
, после чего выводится на экран функцией print
. Во втором случае мы напрямую подставляем значение вы- ражения
2 * (length + breadth)
в функцию print
8.3. Изменение порядка вычисления
53

A Byte of Python (Russian), Версия 2.02
Также обратите внимание, как Python «красиво печатает» результат. Несмот- ря на то, что мы не указали пробела между 'Площадь равна'
и перемен- ной area
, Python подставляет его за нас, чтобы получить красивый и понят- ный вывод. Программа же остаётся при этом легкочитаемой (поскольку нам не нужно заботиться о пробелах между строками, которые мы выводим). Это пример того, как Python облегчает жизнь программисту.
8.6 Резюме
Мы увидели, как пользоваться операторами, операндами и выражениями. Это основные строительные блоки любой программы. Далее мы увидим, как это применить на практи- ке.
8.6. Резюме
54

Поток команд
В программах, которые мы до сих пор рассматривали, последовательность команд всегда выполнялась Python по порядку строго сверху вниз. А что, если нам необходимо изменить поток выполняющихся команд? Например, если требуется, чтобы программа принимала некоторое решение и выполняла различные действия в зависимости от ситуации; ска- жем, печатала «Доброе утро» или «Добрый вечер» в зависимости от времени суток.
Как вы уже, наверное, догадались, этого можно достичь при помощи операторов управ- ления потоком. В Python есть три оператора управления потоком:
if
,
for и
while
9.1 Оператор if
Оператор if используется для проверки условий: если
1
условие верно
2
, выполняется блок выражений (называемый «if-блок»), иначе
3
выполняется другой блок выражений (назы- ваемый «else-блок»). Блок «else» является необязательным.
Пример: (сохраните как if.py
)
number
=
23
guess
=
int
(
input
(
'Введите целое число : '
))
if
guess
==
number:
print
(
'Поздравляю, вы угадали,'
)
# Начало нового блока
print
(
'(хотя и не выиграли никакого приза!)'
)
# Конец нового блока
elif
guess
<
number:
print
(
'Нет, загаданное число немного больше этого.'
)
# Ещё один блок
# Внутри блока вы можете выполнять всё, что угодно ...
else
:
print
(
'Нет, загаданное число немного меньше этого.'
)
# чтобы попасть сюда, guess должно быть больше, чем number
(продолжение на следующей странице)
1
if – англ. «если» (прим.перев.)
2
Соответствует булевому значению
True
(прим.перев.)
3
else – англ. «иначе», «в противном случае» (прим.перев.)
55

A Byte of Python (Russian), Версия 2.02
(продолжение с предыдущей страницы)
print
(
'Завершено'
)
# Это последнее выражение выполняется всегда после выполнения оператора if
Вывод:
$ python if.py
Введите целое число : 50
Нет, загаданное число немного меньше этого.
Завершено
$ python if.py
Введите целое число : 22
Нет, загаданное число немного больше этого.
Завершено
$ python if.py
Введите целое число : 23
Поздравляю, вы угадали,
(хотя и не выиграли никакого приза!)
Завершено
Как это работает:
В этой программе мы принимаем варианты от пользователя и проверяем, сов- падают ли они с заранее заданным числом. Мы устанавливаем переменной number значение любого целого числа, какого хотим. Например,
23
. После этого мы принимаем вариант числа от пользователя при помощи функции input()
. Функции – это всего-навсего многократно используемые фрагмен- ты программы. Мы узнаем о них больше в
следующей главе
Мы передаём встроенной функции input строку, которую она выводит на экран и ожидает ввода от пользователя. Как только мы ввели что-нибудь и на- жали клавишу
Enter
, функция input()
возвращает строку, которую мы вве- ли. Затем мы преобразуем полученную строку в число при помощи int()
,
и сохраняем это значение в переменную guess
. Вообще-то,
int
– это класс,
но на данном этапе вам достаточно знать лишь, что при помощи него можно преобразовать строку в целое число (предполагая, что строка содержит целое число).
Далее мы сравниваем число, введённое пользователем, с числом, которое мы выбрали заранее. Если они равны, мы печатаем сообщение об успехе. Обра- тите внимание, что мы используем соответствующие уровни отступа, чтобы указать Python, какие выражения относятся к какому блоку. Вот почему отсту- пы так важны в Python. Я надеюсь, вы придерживаетесь правила «постоянных отступов», не так ли?
Обратите внимание, что в конце оператора if стоит двоеточие – этим мы по-
9.1. Оператор if
56

A Byte of Python (Russian), Версия 2.02
казываем, что далее следует блок выражений.
После этого мы проверяем, верно ли, что пользовательский вариант числа меньше загаданного, и если это так, мы информируем пользователя о том,
что ему следует выбирать числа немного больше этого. Здесь мы использо- вали выражение elif
, которое попросту объединяет в себе два связанных if else-if else выражения в одно выражение if-elif-else
. Это облегчает чтение программы, а также не требует дополнительных отступов.
Выражения elif и
else также имеют двоеточие в конце логической строки,
за которым следуют соответствующие блоки команд (с соответствующим чис- лом отступов, конечно).
Внутри if-блока оператора if может быть другой оператор if и так далее – это называется вложенным
4
оператором if
Помните, что части elif и
else не обязательны. Минимальная корректная запись оператора if такова:
if True
:
print
(
'Да, это верно.'
)
После того, как Python заканчивает выполнение всего оператора if вместе с его частями elif и
else
, он переходит к следующему выражению в блоке,
содержащем этот оператор if
. В нашем случае это основной блок программы
(в котором начинается выполнение программы), а следующее выражение –
это print('Завершено')
. После этого Python доходит до конца программы и просто выходит из неё.
Хотя это и чрезвычайно простая программа, я указал вам на целый ряд вещей, которые стоит взять на заметку. Всё это довольно легко (даже удивительно легко для тех из вас, кто пришёл из мира C/C++). Поначалу вам придётся держать все эти вещи в памяти, но после некоторой практики вы привыкнете, и они вам покажутся вполне «естественными».
Замечание для программистов на C/C++
В Python нет оператора switch
. Однако, при помощи конструкции if..elif..else мож- но достичь того же самого (а в некоторых случаях можно даже использовать
словарь
, что- бы сделать это быстро).
4
nested – англ. «вложенный» (прим.перев.)
9.1. Оператор if
57

A Byte of Python (Russian), Версия 2.02 9.2 Оператор while
Оператор while позволяет многократно выполнять блок команд до тех пор, пока выпол- няется некоторое условие. Это один из так называемых операторов цикла. Он также может иметь необязательный пункт else
1   2   3   4   5   6   7   8   9   ...   14


Пример: (сохраните как while.py
)
number
=
23
running
=
True
while
running:
guess
=
int
(
input
(
'Введите целое число : '
))
if
guess
==
number:
print
(
'Поздравляю, вы угадали.'
)
running
=
False
# это останавливает цикл while
elif
guess
<
number:
print
(
'Нет, загаданное число немного больше этого.'
)
else
:
print
(
'Нет, загаданное число немного меньше этого.'
)
else
:
print
(
'Цикл while закончен.'
)
# Здесь можете выполнить всё что вам ещё нужно
print
(
'Завершение.'
)
Вывод:
$ python while.py
Введите целое число : 50
Нет, загаданное число немного меньше этого.
Введите целое число : 22
Нет, загаданное число немного больше этого.
Введите целое число : 23
Поздравляю, вы угадали.
Цикл while закончен.
Завершение.
Как это работает:
В этой программе мы продолжаем играть в игру с угадыванием, но преиму- щество состоит в том, что теперь пользователь может угадывать до тех пор,
пока не угадает правильное число, и ему не придётся запускать программу заново для каждой попытки, как это происходило до сих пор. Это наглядно демонстрирует применение оператора while
Мы переместили операторы input и
if внутрь цикла while и установили
9.2. Оператор while
58

A Byte of Python (Russian), Версия 2.02
переменную running в значение
True перед запуском цикла. Прежде всего проверяется, равно ли значение переменной running True
, а затем происхо- дит переход к соответствующему while-блоку. После выполнения этого блока команд условие, которым в данном случае является переменная running
, про- веряется снова. Если оно истинно, while-блок запускается снова, в противном случае происходит переход к дополнительному else-блоку, а затем – к следу- ющему оператору.
Блок else выполняется тогда, когда условие цикла while становится ложным (
False
)
– это может случиться даже при самой первой проверке условия. Если у цикла while имеется дополнительный блок else
, он всегда выполняется, если только цикл не будет прерван оператором break
True и
False называются булевым типом данных, и вы можете считать их эквивалент- ными значениям
1
и
0
соответственно.
Примечание для программистов на C/C++
Помните, что у цикла while может быть блок else
9.3 Цикл for
Оператор for..in также является оператором цикла, который осуществляет итерацию по последовательности объектов, т.е. проходит через каждый элемент в последовательности.
Мы узнаем больше о
последовательностях
в дальнейших главах, а пока просто запомните,
что последовательность – это упорядоченный набор элементов.
Пример: (сохраните как for.py
)
for
i
in range
(
1
,
5
):
print
(i)
else
:
print
(
'Цикл for закончен'
)
Вывод:
$ python for.py
1 2
3 4
Цикл for закончен
9.3. Цикл for
59


A Byte of Python (Russian), Версия 2.02
Как это работает:
В этой программе мы выводим на экран последовательность чисел. Мы гене- рируем эту последовательность, используя встроенную функцию range
5
Мы задаём два числа, и range возвращает последовательность чисел от перво- го числа до второго. Например,
range(1,5)
даёт последовательность
[1, 2,
3, 4]
. По умолчанию range принимает значение шага, равное 1. Если мы зададим также и третье число range
, оно будет служить шагом. Например,
range(1,5,2)
даст
[1,3]
. Помните, интервал простирается только до второ- го числа, т.е. не включает его в себя.
Обратите внимание, что range()
генерирует последовательность чисел, но только по одному числу за раз – когда оператор for запрашивает следую- щий элемент. Чтобы увидеть всю последовательность чисел сразу, используй- те list(range())
. Списки
6
подробно рассматриваются в главе
Структуры
данных
Затем цикл for осуществляет итерацию по этому диапазону - for i in range(1,5)
эквивалентно for i in [1, 2, 3, 4]
, что напоминает при- сваивание переменной i по одному числу (или объекту) за раз, выполняя блок команд для каждого значения i
. В данном случае в блоке команд мы просто выводим значение на экран.
Помните, что блок else не обязателен. Если он присутствует, он всегда выполняется один раз после окончания цикла for
, если только не указан оператор
break
Помните также, что цикл for..in работает для любой последовательности. В нашем слу- чае это список чисел, сгенерированный встроенной функцией range
, но в общем случае можно использовать любую последовательность любых объектов! В следующих разделах мы познакомимся с этим поближе.
Примечание для программистов на C/C++/Java/C#
Цикл for в Python радикально отличается от цикла for в C/C++. Программисты на C#
заметят, что цикл for в Python похож на цикл foreach в C#. Программистам на Java это может напомнить конструкцию for (int i : IntArray)
в Java 1.5.
Если в C/C++ записать for (int i = 0; i < 5; i++)
, то в Python этому соответство- вало бы выражение for i in range(0,5)
. Как видно, в Python цикл for проще, более выразителен и менее подвержен ошибкам.
5
range – англ. «диапазон», «интервал» (прим.перев.)
6
list – англ. «список» (прим.перев.)
9.3. Цикл for
60

A Byte of Python (Russian), Версия 2.02 9.4 Оператор break
Оператор break служит для прерывания
7
цикла, т.е. остановки выполнения команд даже если условие выполнения цикла ещё не приняло значения
False или последователь- ность элементов не закончилась.
Важно отметить, что если циклы for или while прервать оператором break, соответству- ющие им блоки else выполняться не будут.
Пример: (сохраните как break.py
)
while True
:
s
=
input
(
'Введите что-нибудь : '
)
if
s
==
'выход'
:
break
print
(
'Длина строки:'
,
len
(s))
print
(
'Завершение'
)
Вывод:
$ python break.py
Введите что-нибудь : Программировать весело.
Длина строки: 23
Введите что-нибудь : Если работа скучна,
Длина строки: 19
Введите что-нибудь : Чтобы придать ей весёлый тон -
Длина строки: 30
Введите что-нибудь :
используй Python!
Длина строки: 23
Введите что-нибудь : выход
Завершение
Как это работает:
В этой программе мы многократно считываем пользовательский ввод и выво- дим на экран длину каждой введённой строки. Для остановки программы мы вводим специальное условие, проверяющее, совпадает ли пользовательский ввод со строкой 'выход'
. Мы останавливаем программу прерыванием цикла оператором break и достигаем её конца.
Длина введённой строки может быть найдена при помощи встроенной функ- ции len
Помните также, что оператор break может применяться и в цикле for
7
break – англ. «разбивать», «разрывать» (прим.перев.)
9.4. Оператор break
61