How to Think Like a Computer Scientist: Learning with Python 2nd Edition. / Как стать программистом: учимся вместе с Python. Второе издание.: Chapter 4 Conditionals
| Английский оригинал | Перевод на русский | |
|---|---|---|
Сожалеем, но текст оригинала доступен только зарегистрированным пользователям. |
4 Условные выражения czech 01.07.10 в 09:04 |
|
|
4.2 Оператор остатка czech 01.07.10 в 09:05 |
||
|
Оператор остатка работает с целыми числами (с целочисленными выражениями) и дает остаток от деления первого числа на второе. В python оперетор остатка обозначается знаком процента (%). Синтаксис такой же, как и у других операторов: czech 01.07.10 в 09:07 |
||
|
>>> quotient = 7 / 3 czech 01.07.10 в 09:08 |
||
|
Так 7 разделить на 3 равно 2, в остатке 1. czech 01.07.10 в 09:09 |
||
|
Операция остатка от деления имеет несколько полезных свойств. Например, вы можете проверить делится ли одно число на другое без остатка; если остаток равен нулю, значит делиться. czech 01.07.10 в 09:11 |
||
|
Так же можно возвращать правые цифры из числа. Например, x%10 вернет одну саму правую цифру, x%100 вернет две правых цифры. czech 01.07.10 в 09:13 |
||
|
4.2 Логические (булевы) значения и выражения czech 01.07.10 в 09:13 |
||
|
Тип в python для храниния значений True "Правда" и False "Ложь" называется булевым, в честь английского математика Джоджа Буля. Джордж Буль создал булеву алгебру, которая является основой для всей современной компьютерной арифметики. czech 01.07.10 в 09:15 |
||
|
Есть только два булевых значения: True "Истина" и False "Ложь". Запись с большой буквы важна; так, true и false не являются булевыми значениями. czech 01.07.10 в 09:17 |
||
|
>>> type(True) czech 01.07.10 в 09:39 |
||
|
Булево выражение - это выражение, результатом которого является булево значение. Оператор == сравнивает два значения и выдает булево значение: czech 01.07.10 в 10:21 Булево выражение - это выражение, результатом которого является булево значение. Оператор == сравнивает два значения и выдает булево значение: czech 01.07.10 в 10:21 |
||
|
>>> 5 == 5 czech 01.07.10 в 10:21 |
||
|
В первой операции два числа являются эквивалентными, так что выражение возвращает истину -True; во второй операции 5 не эквивалентно 6, поэтому на выходе мы получаем ложь - False. czech 01.07.10 в 10:22 |
||
|
Оператор == - это один из операторов сравнения, другие операторы: czech 01.07.10 в 10:23 |
||
|
x != y # x не эквивалентно y czech 01.07.10 в 10:24 |
||
|
Хотя это и просто для понимания, операторы в python не эквивалентны математическим операторам. Наиболее распространенной ошибкой является использование оператора = вместо ==. Помните, что = - это оператор присвоения, а == - оператор сравнения. И еще, нет таких операторов как =< или =>. czech 01.07.10 в 10:27 |
||
|
4.3 Логические операторы czech 01.07.10 в 10:28 |
||
|
Есть три логических оператора: and, or, not. Значение этих операторов в python совпадает с их значением в английском языке. Например, x > 0 and x < 10 - истинно, только когда x больше нуля И меньше десяти. czech 01.07.10 в 10:32 |
||
|
n % 2 == 0 or n % 3 == 0 - истинно, когда хотябы одно из выражений истинно, т.е. когда n делиться без остатка на 2 ИЛИ на 3. czech 01.07.10 в 10:34 |
||
|
И, наконец, оператор not возвращает обратное логическое значение, так not(x > y) истинно, если (x > y) ложно, когда x меньше или равно y. czech 01.07.10 в 10:47 |
||
|
4.4 Условные вычисления czech 01.07.10 в 10:47 |
||
|
Для того, что бы написать полезную программу, нам практически всегда нужно проверить условие и соответствующе изменить исходные данные. Условные операции помогут нам в это. Самая простая из них, это операция if. czech 01.07.10 в 10:49 |
||
|
if x > 0: czech 01.07.10 в 10:50 |
||
|
Булево выражение, которое стоит после оператора if, называется условием. Если условие истинно, включенное выражение выполнится. Если ложно - ничего не произойдет. czech 01.07.10 в 10:52 |
||
|
Синтаксис операции if следующий: czech 01.07.10 в 10:52 |
||
|
if БУЛЕВО ВЫРАЖЕНИЕ: czech 01.07.10 в 11:14 |
||
|
Все выглядит так же, как и в объявлении функции, которое мы рассмотрели в прошлой главе, - выглядит так же, как и в остальных составных выражениях: заголовок и тело. Заголовок начинается с ключевого слова if, за ним следует булево выражение и после - двоеточие. czech 02.07.10 в 11:12 |
||
|
Операции, расположенные ниже с отступом относительно заголовка, являются блоком. Этото блок в составных выражениях называется телом. czech 02.07.10 в 11:14 |
||
|
Каждое выражение в теле выполняется по порядку, если условное выражение в заголовке возвращает истину - True. Выражение в теле пропускаются, если логическое выражение в заголовне возвращает ложь - False. czech 02.07.10 в 11:15 |
||
|
Не существует ограничений на количество выражений, которое можно разместить в теле, но там должно находиться хотя бы одно. Иногда необходимо, чтобы в теле ничего не происходило (например, если код в теле вы планируется написать позже). В этом случае, можно воспользоваться операцией pass, которая ничего не делает. czech 02.07.10 в 11:18 |
||
|
if True: # Это выражение всегда вернет истину, czech 02.07.10 в 11:19 |
||
|
4.5 Операции ветвления czech 02.07.10 в 11:20 |
||
|
Второй формой операции if является выполнение ветвления, когда есть два возможных варианта выполнения вычислений. Синтаксис выглядит следующим образом: czech 02.07.10 в 11:23 |
||
|
if x % 2 == 0: czech 02.07.10 в 11:24 |
||
|
Если остаток от деления на два равен нулю, значит число x четное и мы видим на экране соответствующий результат. Если условие не верно, выполняется второе выражение. Условие должно возвращаться истину или ложь, в соответствии с этим будет выполняться первое или второе выражение. czech 02.07.10 в 12:11 |
||
|
Как вариант, для проверки четности числа, вы можете поместить этот код в функцию: czech 02.07.10 в 12:12 |
||
|
def print_parity(x): czech 02.07.10 в 12:15 |
||
|
Для любых значений x, функция print_parity показывает соответствующее сообщение. Когда вы вызываете ее, можете передавать любое целочисленное выражение в качестве аргумента. czech 02.07.10 в 12:19 |
||
|
>>> print_parity(17) czech 02.07.10 в 12:19 |
||
|
4.6 Сложное условие czech 02.07.10 в 12:20 |
||
|
Иногда требуется более двух исходов выражения и требуется больше веток решений. Одним из способов является использование сложных составных условных выражений: czech 02.07.10 в 12:22 |
||
|
if x < y: czech 02.07.10 в 12:25 |
||
|
elif - это аббривиатура else if. Опять таки, выполнится только одна ветвь вычислений. Нет ограничений на количество выражений elif, но выражение else может быть только одно, и оно должно быть последним. czech 02.07.10 в 12:28 |
||
|
if choice == 'a': czech 02.07.10 в 12:29 |
||
|
В каждой ветви проверяется условие. Если первое возвращает ложь, проверяется следующие, и так далее. Если любое из условий возвращает истину, соответствующая ветвь запускается на исполнение и сложное услоное выражение заканчивается. Если более одного выражения возвращают истину, выполняется только первое. czech 02.07.10 в 12:33 В каждой ветви проверяется условие. Если первое возвращает ложь, проверяется следующие, и так далее. Если любое из условий возвращает истину, соответствующая ветвь запускается на исполнение и сложное услоное выражение заканчивается. Если более одного выражения возвращают истину, выполняется только первое. czech 02.07.10 в 12:33 |
||
|
4.7 Вложенные условия czech 02.07.10 в 12:34 |
||
|
Одно условное выражение может быть вложено в другое. Мы можем переписать наш код следующим образом: czech 02.07.10 в 12:36 Одно условное выражение может быть вложено в другое. Мы можем переписать наш код следующим образом: czech 02.07.10 в 12:36 |
||
|
if x == y: czech 02.07.10 в 12:37 |
||
|
Внешнее выражение имеет две ветви. Первая ветвь содержит простую операцию. Вторая ветвь содержит вложенное условное выражение, тоже состоящее из двух ветвей, которые могли бы также содержать вложенные условия. czech 02.07.10 в 12:43 |
