Целые числа в языке Питон (и во всех современных языках программирования)
записываются естественным образом: 0, 1, -5 и т.д.
Над целыми числами и переменными можно совершать операции, вроде операции
сложения a+b. В этом выражении `+' называют оператором,
`a' — левым операндом, а `b' — правым операндом.
Операнды могут быть числами, переменными или другими арифметическими выражениями.
Результат операции может быть выведен на экран при помощи инструкции
print или присвоен переменной при помощи оператора присваивания `='.
Над целыми числами и переменными, принимающие целочисленные значения,
можно совершать следующие операции:
+-*/17/5 будет 3)
%17%5 будет 2)
**2**5 будет 32)
Действительные числа представляются в виде десятичных дробей, имеющее ограниченное число знаков после запятой.
Вместо десятичной запятой используется (как это принято в англоязычных странах) десятичная точка. Примеры десятичных
дробей: 190.5, 3.1415926, -2.71828.
Записывать таким образом очень большие или очень маленькие (по абсолютной величине) числа неудобно, поскольку для
записи числа 10100 придется записать 100 нулей. Поэтому используют представление
чисел в виде с плавающей точкой. Запись числа с плавающей точкой имеет вид <f> e <p>,
где <f> — дробное число (положительное или отрицательное), называемое мантиссой, а
<p> — целое число
(положительное или отрицательное), называемое порядком. Число, записанное таким образом,
равно f×10p . Фактически, порядок означает, на какое число позиций нужно
сдвинуть вправо десятичную точку в записи числа <f>. Если же порядок меньше нуля, то сдвиг десятичной точки
осуществляется влево. Примеры записи чисел с плавающей точкой:
3.14e13.14e53.14e-3-1e6-1e-6Для действительных чисел определены все приведенные выше операции, при этом операция деления `/'
возвращает точное значение частного (насколько это позволяет точность вычислений над действительными числами).
То есть 3.0/2.0 будет равно 1.5, в то время, как 3/2 — это 1.
Запомните важное
Правило. Если оба операнда в операции деления целочисленные, то деление выполняется, как деление с остатком и результатом будет целочисленное частное. Если же хотя бы один из операндов является действительным числом (которое может при этом быть целым!), то деление будет выполняться, как деление действительных чисел и результатом будет действительное число в виде десятичной дроби (возможно, с плавающей точкой).
Обратите внимание, что действительные числа могут принимать целые значения, и что число 2.0
это не то же самое, что число 2! Каждый раз используя оператор деления подумайте, каким будет это деление:
целочисленным или точным.
Как же быть, если мы хотим найти точное частное от деления переменной a на переменную
b, но при этом мы не знаем, какие значения они принимают (целые или действительные)?
Тогда надо воспользоваться функцией float, которая возвращает значение, равное своему аргументу,
преобразованному к действительному числу. В приведенном ниже примере деление будет точным, поскольку
мы привели значение переменной a к виду с плавающей точкой.
c=float(a)/b
Аналогично для приведения значения какого-либо выражения к целому числу используется функция int.
Приведение осуществляется путем отбрасывания дробной части числа, то есть значение переменной округляется вниз.
Если в одном выражении используется несколько операторов, то порядок их выполнения
определяется приоритетом операторов. Из перечисленных выше операторов
наивысший приоритет имеет возведение в степень, меньший приоритет имеют операторы
умножения, деления и взятия остатка, еще меньший — операторы сложения и вычитания.
Это означает, что в выражении сначала выполняются все операторы возведения в степень, затем
(слева направо) все операторы умножения, деления и взятия остатка, затем (слева направо)
все операторы сложения и вычитания. Таким образом, 1+2*3 — это
1+(2*3), а a/2*b — это (a/2)*b. Для изменения порядка действий
можно использовать скобки: выражение в скобках вычисляется раньше.
Очень важно следить за порядком действий. Допустим мы хотим вычислить значение
квадратного корня из 5.
Для этого необходимо возвести число 5 в степень 1/2. Однако выполнение инструкции print 5**1/2
приведет к выводу на экран числа 2. Действительно, в этом примере сначала выполняется оператор `**', поскольку
он имеет приоритет выше, чем оператор `/'. Результатом вычисления выражения 5**1 будет 5.
Затем будет выполнен оператор деления и в результате получится число 2.
Попробуем изменить порядок действий при помощи скобок: print 5**(1/2). Результат получится еще более
обескураживающим: 1. Впрочем, ничего удивительного в этом нет: при делении 1/2 в частном получается
0, ну а 5**0 это 1. Правильное же решение оставим в качестве упражнения.
-3+2*7, б) 2+6/2-1, в) 10/3, г) 10.0/3, д) 10%3,
е) 2*3-3*4, ж) 1*2*3*4*5, з) 1*2*3/4*5/6, и) 12/4/2,
к) 3**2, л) 3**2*2, м) 3**(3/2), н) 1e2+1,
о) 1e2/10, п) 1e2/1e3, р) 0.5e-3*15,
с) 1.2*2e2-1e6**(1.0/3.0), т) 5/2*5.0/4.