Первые шаги

Умножение и деление

Операции умножения и деления, как сложение и вычитание, выполняются в Python так же, как в обычной математике. Для умножения Python использует *, для деления — /.


Например:

При делении в Python 3 частное всегда возвращается в виде числа с плавающей точкой, даже если вы делите целые числа:

Это одно из главных различий между Python 2 и Python 3. Python 3 возвращает дробный результат, потому при делении 11 на 2 вы получите 5.5. В Python 2 деление привязано к типам данных, потому при делении целого числа невозможно получить число с плавающей точкой; поэтому при делении 11 на 2 Python 2 возвращает 5.

Когда числа по обе стороны символа деления являются целыми, выполняется деление floor, то есть, для фактора х Python 2 возвращает наибольшее целое число меньше или равное х. К примеру, при делении 5 / 2 таким числом будет 2.

Чтобы выполнить деление floor и получить только целую часть числа, Python 3 использует оператор //. К примеру, разделив 100//40, вы получите 2.

Интерактивный учебник языка Python

1. Целочисленная арифметика

Для целых чисел определены операции , , и . Операция деления для целых чисел возвращает вещественное число (значение типа ). Также функция возведения в степень возвращает значение типа , если показатель степени — отрицательное число.

Но есть и специальная операция целочисленного деления, выполняющегося с отбрасыванием дробной части, которая обозначается (она соответствует операции в Паскале). Она возвращает целое число: целую часть частного. Другая близкая ей операция − это операция взятия остатка от деления, обозначаемая (она соответствует операции в Паскале). Например:

print(17 / 3)   # выведет 5.66666666667
print(17 // 3)  # выведет 5
print(17 % 3)   # выведет 2

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

В этом разделе речь пойдет о действительных числах, имеющих тип .

Обратите внимание, что если вы хотите считать с клавиатуры действительное число, то результат, возращаемый функцией необходимо преобразовывать к типу :

1.492
x = float(input())
print(x)

Действительные (вещественные) числа представляются в виде чисел с десятичной точкой (а не запятой, как принято при записи десятичных дробей в русских текстах). Для записи очень больших или очень маленьких по модулю чисел используется так называемая запись «с плавающей точкой» (также называемая «научная» запись). В этом случае число представляется в виде некоторой десятичной дроби, называемой мантиссой, умноженной на целочисленную степень десяти (порядок). Например, расстояние от Земли до Солнца равно 1.496·1011, а масса молекулы воды 2.99·10-23.

Числа с плавающей точкой в программах на языке Питон, а также при вводе и выводе записываются так: сначала пишется мантисса, затем пишется буква , затем пишется порядок. Пробелы внутри этой записи не ставятся. Например, указанные выше константы можно записать в виде и . Перед самим числом также может стоять знак минус.

Напомним, что результатом операции деления всегда является действительное число (), в то время как результатом операции является целое число ().

Преобразование действительных чисел к целому производится с округлением в сторону нуля, то есть , .

3. Библиотека math

Для проведения вычислений с действительными числами язык Питон содержит много дополнительных функций, собранных в библиотеку (модуль), которая называется .

Для использования этих функций в начале программы необходимо подключить математическую библиотеку, что делается командой

import math

Например, пусть мы хотим округлять вещественные числа до ближайшего целого числа вверх. Соответствующая функция от одного аргумента вызывается, например, так: (то есть явно указывается, что из модуля используется функция ). Вместо числа может быть любое число, переменная или выражение. Функция возращает значение, которое можно вывести на экран, присвоить другой переменной или использовать в выражении:

import math

x = math.ceil(4.2)
y = math.ceil(4.8)
print(x)
print(y)

Другой способ использовать функции из библиотеки , при котором не нужно будет при каждом использовании функции из модуля указывать название этого модуля, выглядит так:

from math import ceil
 
x = 7 / 2
y = ceil(x)
print(y)
from math import *
 
x = 7 / 2
y = ceil(x)
print(y)

Ниже приведен список основных функций модуля . Более подробное описание этих функций можно найти на сайте с документацией языка Питон.

Некоторые из перечисленных функций (, , ) являются стандартными и не требуют подключения модуля для использования.

Функция Описание
Округление
Округляет число в сторону нуля. Это стандартная функция, для ее использования не нужно подключать модуль .
Округляет число до ближайшего целого. Если дробная часть числа равна 0.5, то число округляется до ближайшего четного числа.

Унарные арифметические операции

Унарное математическое выражение состоит только из одного компонента или элемента. В Python плюс и минус вместе со значением могут быть использованы в качестве одного элемента, это позволяет показать тождественность значения (+) или изменить его знак (-).

Тождественность используется нечасто. Плюс можно использовать с положительными числами:

Если вы используете плюс с отрицательным числом, он также вернёт тождественное (в этом случае – отрицательное) число.

Минус позволяет изменить знак. Если вы добавите минус к положительному значению, в результате будет отображено отрицательное значение:

Если добавить минус к отрицательному значению, в результате получится положительное число:

Программа на Python с переменными

Рассмотрим пример иллюстрирующий математическую модель описывающий траекторию полета мяча в воздухе. Из второго закона Ньютона, предполагая незначительное сопротивление воздуха, мы можем вывести зависимость вертикального положения \( y \) мяча от времени \( t \): $$ \begin{equation*} \tag{1} y = v_0 t -0.5 g t^2 \end{equation*} $$

где \( v_0 \) — начальная скорость, \( g \) — ускорение свободного падения, значение которого положим равным \( 9.81 \) м/c \( ^2 \).

Сценарий

Рассмотрим сценарий на Python для вычисления по простой формуле. Предположим, что сценарий у нас сохранен в виде текста в файле ball.py

# -*- coding: utf-8 -*-
# Программа для вычисления положения мяча при вертикальном движении

v0 = 5       # Начальная скорость
g = 9.81     # Ускорение свободного падения
t = 0.6      # Время

y = v0*t - 0.5*g*t**2

Разбор сценария

Сценарий на языке Python — это текстовый файл (в нашем случае ball.py), содержащий некоторые инструкции. Мы можем читать сценарий и понимать, что программа способна делать, но сам сценарий не выполняет никаких действий на компьютере, пока интерпретатор Python не прочитает текст сценария и не преобразует его в некоторые действия.

Когда сценарий запущен в интерпретаторе Python, он разбирается и выполняется построчно. Первые две строки

# -*- coding: utf-8 -*-
# Программа для вычисления положения мяча при вертикальном движении

являются

комментариями*, т.е. как только встречается символ , интерпретатор Python воспринимает оставшуюся часть строки как комментарий, пропускает ее и переходит к следующей строки.

Замечание

В первой строке указывается кодировка, в которой сохранен файл сценария (в нашем случае *— это UTF8). Если в сценарии не предполагается использование не ASCII символов, то первую строку можно опустить. Однако, мы можем использовать кириллический текст, поэтому в наших сценариях мы всегда будем указывать кодировку.

Следующие 3 строки, интерпретируемые Pyhton:

v0 = 5       # Начальная скорость
g = 9.81     # Ускорение свободного падения
t = 0.6      # Время

В Python выражения вида известны как операторы присваивания. Значение правой части, в нашем случае целое число , становится объектом, а имя переменной слева *— именованной ссылкой на этот объект. Всякий раз, когда мы запишем , Python заменит ее целым значением . Выражение создает новое имя для того же целого объекта со значением , а не копирует объект.

Таким образом, прочитав эти строки интерпретатор Python знает три переменных и их значения. Эти переменные используются интерпретатором в следующей строке, фактически реализующей некоторую формулу

y = v0*t - 0.5*g*t**2

В этой строке Python интерпретирует как оператор умножения, *— вычитания, *— возведения в степень (естественно, и интерпретируются как операторы сложения и деления соответственно). В результате вычисляется значение по формуле в правой части выражения, которое присваивается переменной с именем . Последняя строка сценария

print y

выводит на печать значение переменной . Таким образом при запуске сценария ball.by на экране будет выведено число . В тексте сценария имеются также и пустые строки, которые пропускаются интерпретатором Python. Они добавлены для лучшей читабельности кода.

Запуск сценариев Python

Сценарии Python обычно имеют расширение , но это не является необходимым. Как мы уже говорили, рассмотренный выше сценарий сохранен в файле ball.py. Запустить его можно следующей командой:

python ball.py

Такая команда явно указывает, что в качестве интерпретатора файла должен использоваться Python. Также могут задаваться аргументы командной строки, который загружается сценарием.

Команда должна запускаться в консольном окне (терминал в Unix, Командная строка (Command Prompt) в MS Windows).

В случае, когда файлу установлено разрешение на выполнение (команда ) в ОС Unix (Linux), сценарий можно запускать командой, сценарий можно запускать командой

./ball.py

В этом случае первая строка сценария должна содержать описание интерпретатора:

#!/usr/bin/env python

В ОС MS Windows можно писать просто

ball.py

вместо , если расширение ассоциировано с интерпретатором Python.

История

Возведение в степень – частный случай умножения, поэтому данную операцию изначально не рассматривали, как самостоятельную. Но уже в работах Диофанта Александрийского степени отведено особое место. В частности «Отец Алгебры» применял понятия кубов и квадратов числа.

Эта операция была известна ещё в древнем Вавилоне, однако современный её вид устоялся лишь в XVII веке.

Как умножение позволяет сократить количество символов сложения:


Так и степень сокращает запись умножения:

  • 6 – это основание;
  • 2 – показатель степени (это число говорит о том, сколько раз число в основании должно быть умножено само на себя).

До воцарения числового показателя, были и другие варианты его записи. Математики раннего Возрождения использовали буквы. Например, Q обозначала квадрат, а C – куб. Различные формы записи возведения в степень не обошли и языки программирования.

Комплексные числа[править]

Пусть x2 = 2. Большинство из нас будут способны найти первый корень x=2{\displaystyle x={\sqrt {2}}}. Более продвинутые в математике заметят, что имеется и второй корень x=−2{\displaystyle x=-{\sqrt {2}}}. Но встретившись с выражением x2 = -2 решение смогут найти лишь немногие люди, знакомые с комплексными числами. Если вы только собираетесь стать ученым, настоятельно советуем познакомиться сейчас с этими замечательными числами перед тем, как изучить дальнейшие примеры, на которых вы сможете проверить свои новые знания.

Комплексная арифметика в Pythonправить

Python поддерживает расчеты с комплексными числами. Мнимая часть записывается через j, вместо i в математике. Комплексное число 2-3i соответственно будет записано как 2-3j. Ниже показан простой сеанс работы с комплексными числами и примеры простой комплексной арифметики:

>>> u = 2.5 + 3j       # создаем комплексное
>>> v = 2              # а это целое
>>> w = u + v          # комплексное + целое
>>> w
(4.5+3j)

>>> a = -2
>>> b = 0.5
>>> s = a + b*1j       # complex из двух float
>>> s = complex(a, b)  # другой способ
>>> s
(-2+0.5j)
>>> s*w                # complex*complex
(-10.5-3.75j)
>>> sw                # complex/complex
(-0.25641025641025639+ 0.28205128205128205j)

Кроме того объект типа complex легко может быть разложен на реальную и мнимую части и для него может быть найдено сопряженное (conjugate) число:

>>> s.real
-2.0
>>> s.imag
0.5
>>> s.conjugate()
(-2-0.5j)

Комплексные функции Pythonправить

Для работы с функциями комплексных переменных следует использовать специальную библиотеку — cmath:

>>> from cmath import sin, sinh
>>> r1 = sin(8j)
>>> r1
1490.4788257895502j
>>> r2 = 1j*sinh(8)
>>> r2
1490.4788257895502j

Арифметические функции в Python

Арифметические функции используются для представления чисел в различных формах и осуществления над ними математических операций. Далее представлен перечень самых популярных арифметических функций:

  • : округление определенного числа вверх;
  • : возвращает модуль (абсолютное значение) указанного числа;
  • : округление определенного числа вниз;
  • : получение наибольшего общего делителя чисел и ;
  • : возвращает сумму всех элементов итерируемого объекта;
  • : возвращает (e^x)-1;
  • : когда значение слишком мало, вычисление может привести к значительной потери в точности. может вернуть вывод с полной точностью.

В следующем примере показано использование перечисленных выше функций:

Python

import math

num = -4.28 a = 14 b = 8

num_list = x = 1e-4 # Малое значение x

print(‘Число:’, num) print(‘Округление числа вниз:’, math.floor(num)) print(‘Округление числа вверх:’, math.ceil(num)) print(‘Модуль числа:’, math.fabs(num)) print(‘Наибольший общий делитель a и b: ‘ + str(math.gcd(a, b))) print(‘Сумма элементов списка: ‘ + str(math.fsum(num_list))) print(‘e^x (при использовании функции exp()) равно:’, math.exp(x)-1) print(‘e^x (при использовании функции expml()) равно:’, math.expm1(x))

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

importmath

num=-4.28

a=14

b=8

num_list=10,8.25,75,7.04,-86.23,-6.43,8.4

x=1e-4# Малое значение x

print(‘Число:’,num)

print(‘Округление числа вниз:’,math.floor(num))

print(‘Округление числа вверх:’,math.ceil(num))

print(‘Модуль числа:’,math.fabs(num))

print(‘Наибольший общий делитель a и b: ‘+str(math.gcd(a,b)))

print(‘Сумма элементов списка: ‘+str(math.fsum(num_list)))

print(‘e^x (при использовании функции exp()) равно:’,math.exp(x)-1)

print(‘e^x (при использовании функции expml()) равно:’,math.expm1(x))

Вывод

Python

Число: -4.28 Округление числа вниз: -5 Округление числа вверх: -4 Модуль числа: 4.28 Наибольший общий делитель a и b: 2 Сумма элементов списка: 16.029999999999998 e^x (при использовании функции exp()) равно: 0.0001000050001667141 e^x (при использовании функции expml()) равно: 0.00010000500016667084

1 2 3 4 5 6 7 8

Число-4.28

Округлениечиславниз-5

Округлениечиславверх-4

Модульчисла4.28


Наибольшийобщийделительaиb2

Суммаэлементовсписка16.029999999999998

e^x(прииспользованиифункцииexp())равно0.0001000050001667141

e^x(прииспользованиифункцииexpml())равно0.00010000500016667084

К числу других математических функций относятся:

  • : принимает два вещественных аргумента, возводит первый аргумент в степень, значением которой является второй аргумент, после чего возвращает результат. К примеру, эквивалентно выражению ;
  • : возвращает квадратный корень определенного числа.

Примеры данных методов представлены ниже:

Возведение в степень

Python

math.pow(3, 4)

1 math.pow(3,4)

Вывод

Shell

81.0

1 81.0

Квадратный корень

Python

math.sqrt(81)

1 math.sqrt(81)

Вывод

Shell

9.0

1 9.0

Использование целочисленного деления в Python — python

Python2.7 автоматически использует подразделение operator как целое (целое число), которое всегда будет производить целое число.

Например:


1/2 = 0

3/4 = 0

100/30 = 3

Чтобы сделать float-разделение, вы должны иметь одно или оба значения как тип float.

Как это:

Результаты не то, что вы ожидали, так как Python оценивает выражения, используя целочисленное деление и порядок операций.

Если вы оцениваете в Python, Python интерпретирует это как или

Если вы оцениваете , Python интерпретирует это как =

Другие примеры:

Python оценивает (1.0/2.0) первое это время, поскольку порядок операций диктует, что круглые скобки вычисляются в первую очередь. А так как 1.0 и 2.0 — это float, а не целые числа, Python отлично справляется с выполнением float-деления. Вы получите следующее:

который дает вам то, что вы ожидаете.

В противоположность:

Альтернативное решение от Carpetsmoker:

Эта строка даст вам поведение Python3.x в программе Python2.x, а Python3.x принимает operator как float-деление, даже если оба значения являются целыми типами. Таким образом, после его импорта становится оператором с плавающим делением.


С этим читают