Такой формат выглядит лучше, и его проще прочесть.
Умножение тоже довольно привычно:
>>> 6 * 7
42
>>> 7 * 6
42
>>> 6 * 7 * 2 * 3
252
Операция деления чуть более интересна, поскольку существует два ее вида:
• с помощью оператора / выполняется
• с помощью оператора // выполняется
Даже если вы делите целое число на целое число, оператор / даст результат с плавающей точкой:
>>> 9 / 5
1.8
Целочисленное деление даст вам целочисленный ответ, отбрасывая остаток:
>>> 9 // 5
1
Деление на ноль с помощью любого оператора сгенерирует исключение:
>>> 5 / 0
Traceback (most recent call last):
··File "
ZeroDivisionError: division by zero
>>> 7 // 0
Traceback (most recent call last):
··File "
ZeroDivisionError: integer division or modulo by z
Во всех предыдущих примерах используются непосредственно целочисленные значения. Вы можете смешивать целочисленные значения и переменные, которым было присвоено целочисленное значение:
>>> a = 95
>>> a
95
>>> a — 3
92
Ранее, когда мы выполнили операцию a — 3, мы не присвоили результат переменной a, поэтому ее значение не изменилось:
>>> a
95
Если вы хотите изменить значение переменной а, придется сделать следующее:
>>> a = a — 3
>>> a
92
Это обычно сбивает с толку начинающих программистов, потому что благодаря изучению математики в школе мы видим знак = и думаем, что он указывает на равенство. В Python выражение, стоящее справа от знака =, вычисляется первым и только затем присваивается переменной с левой стороны.
Проще думать об этом так.
1. Вычитаем 3 из а.
2. Присваиваем результат этого вычитания временной переменной.
3. Присваиваем значение временной переменной а:
>>> a = 95
>>> temp = a — 3
>>> a = temp
Поэтому, когда вы говорите:
>>> a = a — 3
Python рассчитывает результат операции вычитания с правой стороны от знака =, запоминает результат, а затем присваивает его переменной а, которая находится с левой стороны. Это гораздо быстрее и приятнее глазу, чем использование временной переменной.
Вы можете совместить арифметические операторы с присваиванием, размещая оператор перед знаком =. В этом примере выражение а — = 3 аналогично выражению а = а — 3:
>>> a = 95
>>> a — = 3
>>> a
92
Это выражение аналогично выражению а = а + 8:
>>> a += 8
>>> a
100
А это — выражению а = а * 2:
>>> a *= 2
>>> a
200
Здесь представлен пример деления с плавающей точкой, а = а / 3:
>>> a /= 3
>>> a
66.66666666666667
Присвоим значение 13 переменной а, а затем попробуем использовать сокращенный вариант а = а // 4 (целочисленное деление):
>>> a = 13
>>> a //= 4
>>> a
3
Символ % имеет несколько разных применений в Python. Когда он находится между двух чисел, с его помощью вычисляется остаток от деления первого числа на второе:
>>> 9 % 5
4
Вот так можно получить частное и остаток одновременно:
>>> divmod(9,5)
(1, 4)
В противном случае вам пришлось бы считать их по отдельности:
>>> 9 // 5
1
>>> 9 % 5
4
Только что вы увидели кое-что новое:
Приоритет операций
Рассмотрим, что получится, если ввести следующее:
>>> 2 + 3 * 4
Если выполнить сложение первым, 2 + 3 равно 5, а 5 * 4 равно 20. Но если выполнить первым умножение, 3 * 4 равно 12, а 2 + 12 равно 14. В Python, как и в большинстве других языков, умножение имеет больший
>>> 2 + 3 * 4
14
Как узнать приоритет той или иной операции? В приложении Е приводится огромная таблица, в которой перечислены все приоритеты, но я обнаружил, что на практике никогда не смотрю в эти правила. Гораздо проще добавить пару скобок, чтобы сгруппировать код и вычисления так, как нужно:
>>> 2 + (3 * 4)
14
Это поможет любому человеку, читающему код, точно определить его предназначение.
Системы счисления
Предполагается, что целые числа указываются в десятичной