Целые числа в языке Питон (и во всех современных языках программирования)
записываются естественным образом: 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.14e1
3.14e5
3.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
.