How to Think Like a Computer Scientist: Learning with Python 2nd Edition. / Как стать программистом: учимся вместе с Python. Второе издание.: Chapter 4 Conditionals

← →
Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

4 Условные выражения

czech 01.07.10 в 09:04

0

4.2 Оператор остатка

czech 01.07.10 в 09:05

0

Оператор остатка работает с целыми числами (с целочисленными выражениями) и дает остаток от деления первого числа на второе. В python оперетор остатка обозначается знаком процента (%). Синтаксис такой же, как и у других операторов:

czech 01.07.10 в 09:07

0

>>> quotient = 7 / 3
>>> print quotient
2
>>> remainder = 7 % 3
>>> print remainder
1

czech 01.07.10 в 09:08

0

Так 7 разделить на 3 равно 2, в остатке 1.

czech 01.07.10 в 09:09

0

Операция остатка от деления имеет несколько полезных свойств. Например, вы можете проверить делится ли одно число на другое без остатка; если остаток равен нулю, значит делиться.

czech 01.07.10 в 09:11

0

Так же можно возвращать правые цифры из числа. Например, x%10 вернет одну саму правую цифру, x%100 вернет две правых цифры.

czech 01.07.10 в 09:13

0

4.2 Логические (булевы) значения и выражения

czech 01.07.10 в 09:13

0

Тип в python для храниния значений True "Правда" и False "Ложь" называется булевым, в честь английского математика Джоджа Буля. Джордж Буль создал булеву алгебру, которая является основой для всей современной компьютерной арифметики.

czech 01.07.10 в 09:15

0

Есть только два булевых значения: True "Истина" и False "Ложь". Запись с большой буквы важна; так, true и false не являются булевыми значениями.

czech 01.07.10 в 09:17

0

>>> type(True)
<type 'bool'>
>>> type(true)
Traceback (most recent call last): File "<stdin>", line 1, in <module>
NameError: name 'true' is not defined

czech 01.07.10 в 09:39

0

Булево выражение - это выражение, результатом которого является булево значение. Оператор == сравнивает два значения и выдает булево значение:

czech 01.07.10 в 10:21

0

Булево выражение - это выражение, результатом которого является булево значение. Оператор == сравнивает два значения и выдает булево значение:

czech 01.07.10 в 10:21

0

>>> 5 == 5
True
>>> 5 == 6
False

czech 01.07.10 в 10:21

0

В первой операции два числа являются эквивалентными, так что выражение возвращает истину -True; во второй операции 5 не эквивалентно 6, поэтому на выходе мы получаем ложь - False.

czech 01.07.10 в 10:22

0

Оператор == - это один из операторов сравнения, другие операторы:

czech 01.07.10 в 10:23

0

x != y # x не эквивалентно y
x > y # x больше, чем y
x < y # x меньше, чем y
x >= y # x больше или равно y
x <= y # x меньше или равно y

czech 01.07.10 в 10:24

0

Хотя это и просто для понимания, операторы в python не эквивалентны математическим операторам. Наиболее распространенной ошибкой является использование оператора = вместо ==. Помните, что = - это оператор присвоения, а == - оператор сравнения. И еще, нет таких операторов как =< или =>.

czech 01.07.10 в 10:27

0

4.3 Логические операторы

czech 01.07.10 в 10:28

0

Есть три логических оператора: and, or, not. Значение этих операторов в python совпадает с их значением в английском языке. Например, x > 0 and x < 10 - истинно, только когда x больше нуля И меньше десяти.

czech 01.07.10 в 10:32

0

n % 2 == 0 or n % 3 == 0 - истинно, когда хотябы одно из выражений истинно, т.е. когда n делиться без остатка на 2 ИЛИ на 3.

czech 01.07.10 в 10:34

0

И, наконец, оператор not возвращает обратное логическое значение, так not(x > y) истинно, если (x > y) ложно, когда x меньше или равно y.

czech 01.07.10 в 10:47

0

4.4 Условные вычисления

czech 01.07.10 в 10:47

0

Для того, что бы написать полезную программу, нам практически всегда нужно проверить условие и соответствующе изменить исходные данные. Условные операции помогут нам в это. Самая простая из них, это операция if.

czech 01.07.10 в 10:49

0

if x > 0:
    print "x - положительное число"

czech 01.07.10 в 10:50

0

Булево выражение, которое стоит после оператора if, называется условием. Если условие истинно, включенное выражение выполнится. Если ложно - ничего не произойдет.

czech 01.07.10 в 10:52

0

Синтаксис операции if следующий:

czech 01.07.10 в 10:52

0

if БУЛЕВО ВЫРАЖЕНИЕ:
    ОПЕРАЦИИ

czech 01.07.10 в 11:14

0

Все выглядит так же, как и в объявлении функции, которое мы рассмотрели в прошлой главе, - выглядит так же, как и в остальных составных выражениях: заголовок и тело. Заголовок начинается с ключевого слова if, за ним следует булево выражение и после - двоеточие.

czech 02.07.10 в 11:12

0

Операции, расположенные ниже с отступом относительно заголовка, являются блоком. Этото блок в составных выражениях называется телом.

czech 02.07.10 в 11:14

0

Каждое выражение в теле выполняется по порядку, если условное выражение в заголовке возвращает истину - True. Выражение в теле пропускаются, если логическое выражение в заголовне возвращает ложь - False.

czech 02.07.10 в 11:15

0

Не существует ограничений на количество выражений, которое можно разместить в теле, но там должно находиться хотя бы одно. Иногда необходимо, чтобы в теле ничего не происходило (например, если код в теле вы планируется написать позже). В этом случае, можно воспользоваться операцией pass, которая ничего не делает.

czech 02.07.10 в 11:18

0

if True: # Это выражение всегда вернет истину,
    pass

czech 02.07.10 в 11:19

0

4.5 Операции ветвления

czech 02.07.10 в 11:20

0

Второй формой операции if является выполнение ветвления, когда есть два возможных варианта выполнения вычислений. Синтаксис выглядит следующим образом:

czech 02.07.10 в 11:23

0

if x % 2 == 0:
    print x, "is even" # четное
else:
    print x, "is odd" # нечетное

czech 02.07.10 в 11:24

0

Если остаток от деления на два равен нулю, значит число x четное и мы видим на экране соответствующий результат. Если условие не верно, выполняется второе выражение. Условие должно возвращаться истину или ложь, в соответствии с этим будет выполняться первое или второе выражение.

czech 02.07.10 в 12:11

0

Как вариант, для проверки четности числа, вы можете поместить этот код в функцию:

czech 02.07.10 в 12:12

0

def print_parity(x):
    if x % 2 == 0:
        print x, "is even"
    else:
        print x, "is odd"

czech 02.07.10 в 12:15

0

Для любых значений x, функция print_parity показывает соответствующее сообщение. Когда вы вызываете ее, можете передавать любое целочисленное выражение в качестве аргумента.

czech 02.07.10 в 12:19

0

>>> print_parity(17)
17 is odd.
>>> y = 41
>>> print_parity(y+1)
42 is even.

czech 02.07.10 в 12:19

0

4.6 Сложное условие

czech 02.07.10 в 12:20

0

Иногда требуется более двух исходов выражения и требуется больше веток решений. Одним из способов является использование сложных составных условных выражений:

czech 02.07.10 в 12:22

0

if x < y:
    print x, "is less than", y
elif x > y:
    print x, "is greater than", y
else:
    print x, "and", y, "are equal"

czech 02.07.10 в 12:25

0

elif - это аббривиатура else if. Опять таки, выполнится только одна ветвь вычислений. Нет ограничений на количество выражений elif, но выражение else может быть только одно, и оно должно быть последним.

czech 02.07.10 в 12:28

0

if choice == 'a':
    function_a()
elif choice == 'b':
    function_b()
elif choice == 'c':
    function_c()
else:
    print "Invalid choice."

czech 02.07.10 в 12:29

0

В каждой ветви проверяется условие. Если первое возвращает ложь, проверяется следующие, и так далее. Если любое из условий возвращает истину, соответствующая ветвь запускается на исполнение и сложное услоное выражение заканчивается. Если более одного выражения возвращают истину, выполняется только первое.

czech 02.07.10 в 12:33

0

В каждой ветви проверяется условие. Если первое возвращает ложь, проверяется следующие, и так далее. Если любое из условий возвращает истину, соответствующая ветвь запускается на исполнение и сложное услоное выражение заканчивается. Если более одного выражения возвращают истину, выполняется только первое.

czech 02.07.10 в 12:33

0

4.7 Вложенные условия

czech 02.07.10 в 12:34

0

Одно условное выражение может быть вложено в другое. Мы можем переписать наш код следующим образом:

czech 02.07.10 в 12:36

0

Одно условное выражение может быть вложено в другое. Мы можем переписать наш код следующим образом:

czech 02.07.10 в 12:36

0

if x == y:
    print x, "and", y, "are equal"
else:
    if x < y:
        print x, "is less than", y
    else:
        print x, "is greater than", y

czech 02.07.10 в 12:37

0

Внешнее выражение имеет две ветви. Первая ветвь содержит простую операцию. Вторая ветвь содержит вложенное условное выражение, тоже состоящее из двух ветвей, которые могли бы также содержать вложенные условия.

czech 02.07.10 в 12:43

0
Минутку...

Следующая страница →