Числовые типы данных в Питоне

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


Числовой тип данных относится к встроенному типу данных в Python. Числа, используемые в Питоне, почти так же, как и в обычной математике, подразделяются на целые, вещественные и комплексные. И если с двумя первыми из них более менее ясно, то с комплексными нужно сделать небольшой экскурс и практику. Хотя практика у нас в курсе будет и по всем остальным системам счисления. В самом начале кратко пробежимся по системам счисления, а затем перейдем к определению и классификации числовых типов данных на Питоне.



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



Системы счисления в Питоне


В компьютере числа могут быть представлены в нескольких системах счисления. В жизни и при решении задач мы с вами пользуемся десятичной системой счисления.


Пример представления одного и того же числа в разных системах счисления.


1210=11002=148=C16


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


Существуют определённые правила преобразования чисел из одной системы счисления в другую, об этом вы сможете узнать в одном из наших уроков. И если в других языках программирования требуется писать специальные программы преобразования, чтобы представить такие числа, то в Питоне всё гораздо проще. Для этих целей в языке Python выделено несколько полезных и простых функций:


  • int([x], [основание системы счисления]) - преобразование числа x к целочисленному типу в десятичной системе счисления. По умолчанию задана система счисления десятичная, но можно основание от 2 до 36.
  • bin(x) - преобразование целого числа в двоичную строку.
  • hex(х) - преобразование целого числа в шестнадцатеричную строку.
  • oct(х) - преобразование целого числа в восьмеричную строку.


Целые числа в Питоне


Что такое целые числа? Во-первых, это ряд натуральных чисел - 1,2,3, и т.д. Но также это и ноль, и все отрицательные числа без дробной части.


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


В Питоне 3 зарезервирован лишь один вида целого числового типа int, в отличие от предыдущей версии Питона


int (простое целое число) Они имеют 32-битную точность (или допустимый диапазон от -2147483648 до +2147483647),


Функция int() отбрасывает дробную часть числа, а не округляет его.



x = 13.11
x=int(x)
print("x=",x)

Результат выполнения:



Python 3.5.2 (default, Dec 2015, 13:05:11)
[GCC 4.8.2] on linux
>>>
x= 13
>>>

Функция int() «округляет» отрицательные числа в сторону увеличения. Она не возвращает целую часть числа.



x = -13.81
x=int(x)
print("x=",x)

Результат выполнения:



Python 3.5.2 (default, Dec 2015, 13:05:11)
[GCC 4.8.2] on linux
>>>
x= -13
>>>

Вещественные числа в Питоне


Что такое вещественные числа? Обычно, в книгах ничего не поясняя, говорят, что это числа с плавающей точкой: -0.2, 0.0, 3.14159265 и т.д. Откуда взялась эта плавающая точка?


Вещественными числами называют объединенные множества всех дробных и иррациональных чисел.


Обратите внимание, что в математике мы должны использовать "плавающую запятую". Т.е. пишем число, которое имеет дробную часть в виде числом с запятой, как 0,89 или 3,0. В питоне, как и во множестве других языков программирования, вместо запятой используют для разделения целой и дробной части не запятую, а точку.


Точность чисел с плавающей точкой равна 15 десятичным знакам в дробной части. Из-за этой особенности представления в компьютере вещественные числа неточны, что иногда приводит к ошибкам:




a=123.12
b=123.122
print(a+b)

Результат выполнения:



Python 3.5.2 (default, Dec 2015, 13:05:11)
[GCC 4.8.2] on linux

246.24200000000002

Чтобы избежать ошибки нужно принудительно округлить результат, либо отбросить последние знаки после запятой.



a=123.12
b=123.122
print(round(a+b,3))

Результат выполнения:



Python 3.5.2 (default, Dec 2015, 13:05:11)
[GCC 4.8.2] on linux
246.242


Комплексные числа в Питоне


Этот тип данных стоит особняком. В школьном курсе математики про комплексные числа написано тоже мало. Однако такие числа нашли применение при описании реальных процессов. К примеру, электрического поля в пространстве.



В общем виде, в математике, комплексное число записывается так:


z=x+iy


, где x и y — вещественные числа, i — мнимая единица (величина, для которой выполняется равенство: i2 = ? 1 . Множество комплексных чисел обычно обозначается символом C.


Квадратный корень числа -1 записывается в виде (0, 1j). Умножение комплексных чисел выполняется согласно следующему правилу: (a,b)(c,d) = (ac-bd, ad+bc)



x = 1 + 1j
s=x*x
print("x=",s)

Результат вычисления



Python 3.5.2 (default, Dec 2015, 13:05:11)
[GCC 4.8.2] on linux
>>>
x= 2j
>>>

Всякое комплексное число имеет реальную и мнимую части.


В Питоне любое число можно преобразовать в комплексное с помощью функции complex().


Пример преобразования числа




Python 3.6.0 (v3.6.0) [MSC v.1900 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>>
========= RESTART: D:/progs/python/complex.py ========
>>> complex(67)
(67+0j)
>>>

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



a=complex(67, 34)
print(a)

Примеры вычислений числовых значений комплексных чисел



x = complex(1, 3)
y = complex(2, 4)
print("x=", x)
print("y=",y)
z = x + y
print("z=",z)
z = x - y
print("z=",z)
z = x*y
print("z=",z)
z = x/y
print("z=",z)
print("/n")
print(x.conjugate()) # Сопряжённое число числа x
print(x.imag) # Мнимая часть числа x
print(x.real) # Действительная часть числа x

Смотрим результат вычислений




Python 3.5.2 (default, Dec 2015, 13:05:11)
[GCC 4.8.2] on linux

x= (1+3j)
y= (2+4j)
z= (3+7j) - сумма комплексных чисел
z= (-1-1j) - разность комплексных чисел
z= (-10+10j) - произведение комплексных чисел
z= (0.7+0.1j) - результат деления комплексных чисел

(1-3j) - Сопряжённое число числа x
3.0 - Мнимая часть числа x
1.0 -Действительная часть числа x

Итак, мы с вами изучили, какие существуют числовые типы данных для Питона версии 3. Если вы думаете, что я пропустил ещё один целочисленный тип под названием long, тот тут нет моей вины. Дело в том, что он используется только во второй версии Питона.


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


Дополнительные возможности оператора вывода Как в Питоне запустить Черепашку?