{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "# Арифметические операции\n", "\n", " \n", "**С.В. Лемешевский** (email: `sergey.lemeshevsky@gmail.com`), Институт математики НАН Беларуси\n", "\n", "\n", "Язык Python , благодаря наличию огромного количества библиотек для решения\n", "разного рода вычислительных задач, является конкурентом таким пакетам как Matlab и\n", "Octave. Запущенный в интерактивном режиме, он, фактически, превращается в\n", "мощный калькулятор. В этой главе речь пойдет об арифметических операциях,\n", "доступных в данном языке.\n", "\n", "Как было сказано в предыдущей главе, посвященной типам и модели данных\n", "Python, в этом языке существует три встроенных числовых типа данных:\n", "* целые числа (`int`);\n", "\n", "* вещественные числа (`float`);\n", "\n", "* комплексные числа (`complex`).\n", "\n", "Если в качестве операндов некоторого арифметического выражения используются\n", "только целые числа, то результат тоже будет целое число. Исключением является\n", "операция деления, результатом которой является вещественное число.\n", "При совместном использовании целочисленных и вещественных переменных, результат\n", "будет вещественным.\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "# Арифметические операции с целыми и вещественными числами\n", "
\n", "\n", "Все эксперименты будем проводить в Python, запущенном в интерактивном\n", "режиме.\n", "\n", "\n", "**Сложение.** Складывать можно непосредственно сами числа ..." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "3 + 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "либо переменные, но они должны предварительно быть проинициализированы." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "a = 3\n", "b = 2\n", "a + b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Результат операции сложения можно присвоить другой переменной..." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "a = 3\n", "b = 2\n", "c = a + b\n", "print (c)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "либо ей же самой, в таком случае можно использовать полную или сокращенную\n", "запись, полная выглядит так:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ "a = 3\n", "b = 2\n", "a = a + b\n", "print (a)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "сокращенная так:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [], "source": [ "a = 3\n", "b = 2\n", "a += b\n", "print (a)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Все перечисленные выше варианты использования операции сложения могут быть\n", "применены для всех нижеследующих операций.\n", "\n", "**Вычитание.**" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [], "source": [ "4 - 2" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [], "source": [ "a = 5\n", "b = 7\n", "a - b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Деление.**" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [], "source": [ "9 / 3" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [], "source": [ "a = 7\n", "b = 4\n", "a / b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Получение целой части от деления.**" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [], "source": [ "9 // 3" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [], "source": [ "a = 7\n", "b = 4\n", "a // b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Получение дробной части от деления.**" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [], "source": [ "9 % 5" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [], "source": [ "a = 7\n", "b = 4\n", "a % b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Возведение в степень.**" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [], "source": [ "5**4" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [], "source": [ "a = 4\n", "b = 3\n", "a**b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "\n", "\n", "# Работа с комплексными числами\n", "
\n", "\n", "Для создания комплексного числа можно использовать функцию `complex(a, b)`, в\n", "которую, в качестве первого аргумента, передается действительная часть, в качестве\n", "второго – мнимая. Либо записать число в виде `a+bj`.\n", "\n", "Рассмотрим несколько примеров.\n", "\n", "Создание комплексного числа." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [], "source": [ "z = 1+2j\n", "print(z)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [], "source": [ "x = complex(3, 2)\n", "print(x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Комплексные числа можно складывать, вычитать, умножать, делить и возводить в\n", "степень." ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [], "source": [ "x+z" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [], "source": [ "x-z" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [], "source": [ "x*z" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [], "source": [ "x/z" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [], "source": [ "x**z" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [], "source": [ "x**3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "У комплексного числа можно извлечь действительную и мнимую части." ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [], "source": [ "x = 3+2j\n", "x.real" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [], "source": [ "x.imag" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Для получения комплексносопряженного число необходимо использовать метод\n", "`conjugate()`." ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [], "source": [ "x.conjugate()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "\n", "\n", "# Битовые операции\n", "
\n", "\n", "В Python доступны битовые операции, их можно производить над целыми числами.\n", "\n", "**Побитовое И (AND).**" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [], "source": [ "p = 9\n", "q = 3\n", "p & q" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Побитовое ИЛИ (OR).**" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [], "source": [ "p | q" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Побитовое Исключающее ИЛИ (XOR).**" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [], "source": [ "p^q" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Инверсия.**" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [], "source": [ "~p" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Сдвиг вправо и влево.**" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [], "source": [ "p<<1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "\n", "\n", "# Представление чисел в других системах счисления\n", "
\n", "\n", "В своей повседневной жизни мы используем десятичную систему исчисления, но\n", "при программирования, очень часто, приходится работать с шестнадцатеричной,\n", "двоичной и восьмеричной.\n", "\n", "**Представление числа в шестнадцатеричной системе.**" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": false }, "outputs": [], "source": [ "m = 124504\n", "hex(m)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Представление числа в восьмеричной системе.**" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": false }, "outputs": [], "source": [ "oct(m)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Представление числа в двоичной системе.**" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false }, "outputs": [], "source": [ "bin(m)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "\n", "\n", "# Библиотека (модуль) `math`\n", "
\n", "\n", "В стандартную поставку Python входит библиотека math , в которой содержится\n", "большое количество часто используемых математических функций.\n", "\n", "Для работы с данным модулем его предварительно нужно импортировать." ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import math" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Рассмотрим наиболее часто используемые функции.\n", "\n", "**Функция `math.ceil(x)`.**\n", "\n", "Возвращает ближайшее целое число большее, чем `x`." ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": false }, "outputs": [], "source": [ "math.ceil(3.2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Функция `math.fabs(x)`.**\n", "\n", "Возвращает абсолютное значение числа." ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": false }, "outputs": [], "source": [ "math.fabs(-7)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Функция `math.factorial(x)`.**\n", "\n", "Вычисляет факториал `x`." ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": false }, "outputs": [], "source": [ "math.factorial(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "** Функция `math.floor(x)`.**\n", "\n", "Возвращает ближайшее целое число меньшее, чем `x`." ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false }, "outputs": [], "source": [ "math.floor(3.2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Функция `math.exp(x)`.**\n", "Вычисляет `e**x`." ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": false }, "outputs": [], "source": [ "math.exp(3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Функция `math.log2(x)`.**\n", "Логарифм по основанию `2`." ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": false }, "outputs": [], "source": [ "math.log2(8)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Функция `math.log10(x)`.**\n", "\n", "Логарифм по основанию 10." ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "collapsed": false }, "outputs": [], "source": [ "math.log10(1000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Функция `math.log(x[, base])`.**\n", "\n", "По умолчанию вычисляет логарифм по основанию `e`, дополнительно можно указать\n", "основание логарифма." ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "collapsed": false }, "outputs": [], "source": [ "math.log(5)" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": false }, "outputs": [], "source": [ "math.log()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Функция `math.pow(x, y)`.**\n", "\n", "Вычисляет значение `x` в степени `y`." ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "collapsed": false }, "outputs": [], "source": [ "math.pow(3 , 4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Функция `math.sqrt(x)`.**\n", "\n", "Корень квадратный от `x`." ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "collapsed": false }, "outputs": [], "source": [ "math.sqrt(25)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Тригонометрические функции, их мы оставим без примера.**\n", "\n", "* `math.cos(x)`\n", "\n", "* `math.sin(x)`\n", "\n", "* `math.tan(x)`\n", "\n", "* `math.acos(x)`\n", "\n", "* `math.asin(x)`\n", "\n", "* `math.atan(x)`\n", "\n", "И напоследок пару констант.\n", "* `math.pi` — число $\\pi$.\n", "\n", "* `math.e` — число $e$.\n", "\n", "Помимо перечисленных, модуль `math` содержит ещё много различных\n", "функций, за более подробной информацией можете обратиться eна\n", "официальный сайт ().\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "" ] } ], "metadata": {}, "nbformat": 4, "nbformat_minor": 2 }