Следующая: , Предыдущая: io, Вверх: Top


4 Арифметические операции

4.1 Целые числа

Целые числа в языке Питон (и во всех современных языках программирования) записываются естественным образом: 0, 1, -5 и т.д. Над целыми числами и переменными можно совершать операции, вроде операции сложения a+b. В этом выражении `+' называют оператором, `a— левым операндом, а `b— правым операндом. Операнды могут быть числами, переменными или другими арифметическими выражениями. Результат операции может быть выведен на экран при помощи инструкции print или присвоен переменной при помощи оператора присваивания `='. Над целыми числами и переменными, принимающие целочисленные значения, можно совершать следующие операции:

+
Сумма двух операндов
-
Разность двух операндов
*
Произведение двух операндов
/
Целочисленное частное от деления левого операнда на правый (то есть результатом вычисления выражения 17/5 будет 3)
%
Остаток от деления левого операнда на правый (то есть результатом вычисления выражения 17%5 будет 2)
**
Левый операнд, возведенный в степень, равную правому операнду (то есть результатом вычисления выражения 2**5 будет 32)

Упражнения

  1. Дано число секунд, прошедших с начала урока. Найдите число полных минут, прошедших с начала урока.
  2. Нарисуйте окружность по заданным координатам ее центра и радиусу.
  3. По введенному натуральному числу определите его последнюю цифру.
  4. По введенному двузначному натуральному числу определите число десятков в нем.
  5. По введенному натуральному числу определите число десятков в нем.
  6. По введенному трехзначному числу найдите сумму его цифр.
  7. По введенному трехзначному числу выведите число, полученное из него вычеркиванием средней цифры.

4.2 Действительные числа

Действительные числа представляются в виде десятичных дробей, имеющее ограниченное число знаков после запятой. Вместо десятичной запятой используется (как это принято в англоязычных странах) десятичная точка. Примеры десятичных дробей: 190.5, 3.1415926, -2.71828.

Записывать таким образом очень большие или очень маленькие (по абсолютной величине) числа неудобно, поскольку для записи числа 10100 придется записать 100 нулей. Поэтому используют представление чисел в виде с плавающей точкой. Запись числа с плавающей точкой имеет вид <f> e <p>, где <f> — дробное число (положительное или отрицательное), называемое мантиссой, а <p> — целое число (положительное или отрицательное), называемое порядком. Число, записанное таким образом, равно f×10p . Фактически, порядок означает, на какое число позиций нужно сдвинуть вправо десятичную точку в записи числа <f>. Если же порядок меньше нуля, то сдвиг десятичной точки осуществляется влево. Примеры записи чисел с плавающей точкой:

3.14e1
означает 31.4
3.14e5
означает 314000
3.14e-3
означает 0.00314
-1e6
означает -1000000
-1e-6
означает -0.000001

Для действительных чисел определены все приведенные выше операции, при этом операция деления `/' возвращает точное значение частного (насколько это позволяет точность вычислений над действительными числами). То есть 3.0/2.0 будет равно 1.5, в то время, как 3/2 — это 1. Запомните важное

Правило. Если оба операнда в операции деления целочисленные, то деление выполняется, как деление с остатком и результатом будет целочисленное частное. Если же хотя бы один из операндов является действительным числом (которое может при этом быть целым!), то деление будет выполняться, как деление действительных чисел и результатом будет действительное число в виде десятичной дроби (возможно, с плавающей точкой).

Обратите внимание, что действительные числа могут принимать целые значения, и что число 2.0 это не то же самое, что число 2! Каждый раз используя оператор деления подумайте, каким будет это деление: целочисленным или точным.

Как же быть, если мы хотим найти точное частное от деления переменной a на переменную b, но при этом мы не знаем, какие значения они принимают (целые или действительные)? Тогда надо воспользоваться функцией float, которая возвращает значение, равное своему аргументу, преобразованному к действительному числу. В приведенном ниже примере деление будет точным, поскольку мы привели значение переменной a к виду с плавающей точкой.

     c=float(a)/b

Аналогично для приведения значения какого-либо выражения к целому числу используется функция int. Приведение осуществляется путем отбрасывания дробной части числа, то есть значение переменной округляется вниз.

Упражнения

  1. Выясните, каков смысл операции `%' для действительных чисел.
  2. Напишите программу, переводящую температуру из градусов по Цельсию в градусы по Фаренгейту и наоборот (0oC=32oF, 100oC=212oF).
  3. По данному числу x вычислите квадратный корень из x .
  4. Дано число v. Определите, на какую высоту (в метрах) поднимется тело, брошенное вертикально вверх со скоростью v м/c.
  5. По двум данным числам найдите их среднее арифметическое и среднее геометрическое.
  6. Даны координаты двух точек на плоскости. Найдите расстояние между ними и середину отрезка с концами в этих точках.
  7. Треугольник задан координатами своих вершин. Найдите его площадь, периметр и косинусы всех его углов.
  8. Дано число x. Вычислите число x4 не используя операцию `**' (только при помощи умножений). Какое наименьшее число операций умножения необходимо для этого?
  9. Дано число x. Вычислите число x6 при помощи трех операций умножения.
  10. Дано число x. Вычислите число x7 при помощи четырех операций умножения.
  11. Дано число x. Вычислите число x8 при помощи трех операций умножения.
  12. Дано число x. Вычислите число x13 при помощи пяти операций умножения.
  13. Дано число x. Вычислите число x21 при помощи шести операций умножения.

4.3 Порядок выполнения операторов

Если в одном выражении используется несколько операторов, то порядок их выполнения определяется приоритетом операторов. Из перечисленных выше операторов наивысший приоритет имеет возведение в степень, меньший приоритет имеют операторы умножения, деления и взятия остатка, еще меньший — операторы сложения и вычитания. Это означает, что в выражении сначала выполняются все операторы возведения в степень, затем (слева направо) все операторы умножения, деления и взятия остатка, затем (слева направо) все операторы сложения и вычитания. Таким образом, 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. Правильное же решение оставим в качестве упражнения.

Упражнения

  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.
  2. Все операции сложения, вычитания, умножения, деления и взятия остатка выполняются слева направо, то есть из двух операций с равным приоритетом раньше будет выполнена та, которая стоит левее. Определите, в каком порядке (слева направо или справа налево) выполняются операции возведения в степень.
  3. Даны три целых числа: h, m, s. Определите угол (в градусах) между часовой стрелкой на циферблате часов в момент времени “h часов, m минут, s секунд” и между часовой стрелкой в полночь.