Типы данных чисел python

Числа в Python (FAQ)

Числа в Python (как и в других языках программирования) чрезвычайно простое понятие. В Python все переменные представляют собой объекты и размещаются в динамической памяти.

Базовый набор Python содержит следующие типы чисел:

  • целые ( int );
  • вещественные ( float ) [с десятичной точкой];
  • комплексные ( complex ) [состоят из действительной и мнимой части].

Над числами в Python можно выполнять самые обычные математические операции: сложение ( + ), вычитание ( — ), возведение в степень ( ** ) и т.д.

Целые числа (int)

В Python любое число, состоящее из десятичных цифр без префикса, интерпретируется как десятичное число типа int .

>>> 0 0 >>> 20 20 >>> -20 -20 >>> type(20) >>> 100 + 20 120

Целые числа в Python представлены только одним типом — PyLongObject , реализация которого лежит в longobject.c , а сама структура выглядит так:

Любое целое число состоит из массива цифр переменной длины, поэтому в Python 3 в переменную типа int может быть записано число неограниченной длины. Единственное ограничение длины — это размер оперативной памяти.

>>> 134523345234252523523478777 ** 2 18096530413013891133013347014216107772438771969415729

Целые числа могут записываться не только как десятичные, но и как двоичные, восьмеричные или шестнадцатеричные. Для этого перед числом нужно написать символы:

  • 0b (0B) – для двоичного представления;
  • 0o (0O) – для восьмеричного представления;
  • 0x (0X) – для шестнадцатеричного представления.

Вещественные числа (float)

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

>>> 1.5 1.5 >>> type(1.5) >>> 3. 3.0 >>> .5 0.5 >>> .4e7 4000000.0 >>> type(.4e7) >>> 4.1e-4 0.00041

Числа типа float — неточны (из-за представления чисел с плавающей запятой в компьютере).

>>> 0.3 + 0.3 + 0.3 + 0.1 0.9999999999999999

Информацию о точности и внутреннем представлении float для вашей системы можно получить из sys.float_info

>>> import sys >>> sys.float_info sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)

Если нужна высокая точность обычно используют модули Decimal и Fraction.

Об ограничениях и подводных камнях в работе с числами с плавающей точкой описано тут .

Комплексные числа (complex)

Комплексные числа представляют собой пару значений типа int или float , и имеют вид +j .

Отдельные части комплексного числа доступны через атрибуты real и imag

>>> num = 1.1+2j >>> num.real, num.imag (1.1, 2.0)

Операции с числами

Является ли переменная числом

Любую переменную можно проверить на тип (int, float или complex):

n = 10 >>> if type(n) == int: print(«This is int») This is int

Если вы хотите проверить, находится ли в строке число, воспользуйтесь методом isdigit()

>>> string = «404» >>> string.isdigit() True

Однако стоит помнить, что метод isdigit() не работает для отрицательных чисел и чисел с плавающей точкой.

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

>>> def isInt(value): try: int(value) return True except ValueError: return False >>> isInt(123) True >>> isInt(«qwerty») False >>> isInt(«123») True >>> isInt(«-123») True >>> isInt(«123.2») False

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

  • x + y — сложение;
  • x — y — вычитание;
  • x * y — умножение;
  • x / y — деление;
  • x // y — целочисленное деление;
  • x % y — остаток от деления;
  • x ** y — возведение в степень;
  • -x — смена знака;
  • abs(x) — модуль числа;
  • divmod(x, y) — возвращает кортеж из частного и остатка от деления x на y;
  • pow(x, y[, z]) — возведение числа в степень (z — деление по модулю);
  • round(x[, ndigits]) — округление числа (ndigits — знаки после запятой).

Сравнение чисел

  • x == y — равно;
  • x != y — не равно;
  • x > y — больше;
  • x < y — меньше;
  • x >= y — больше или равно;
  • x

Преобразования

  • int(x) — преобразование в целое число int ;
  • float(x) — преобразование в число с плавающей точкой float ;
  • complex(x) — преобразование в комплексное число complex ;
  • bin(x) — целое числа в двоичную строку;
  • oct(x) — целое число в восьмеричную строку;
  • hex(х) — целое число в шестнадцатеричную строку;
  • [int(x) for x in str(123)] — перевод целого числа 123 в список цифр этого числа;
  • int(».join(str(digit) for digit in [1,2,3])) — перевод списка цифр [1,2,3] в целое число 123;
  • str(x) — число в строку;

Ввод чисел

Для ввода данных в программу на языке Python используется функция input() . Эта функция считывает то что вы ввели на клавиатуре, и записывает эти данные в переменную в виде одной строки. После этого, перевести строку в число можно простыми функциями int() , float() или complex() .

Если нужен список чисел, введите несколько чисел через пробел и выполните:

my_list = [int(x) for x in input().split()] print(my_list) > [1, 2, 3]

Вывод чисел

Для вывода числа используйте print() :

>>> print(1) 1 >>> print(-1.2) -1.2 >>> print(1, 3, 4) 1 3 4

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

>>> print(«int variable = » + str(1)) int variable = 1 >>> print(«int variable = <>«.format(1)) int variable = 1 >>> print(f’int variable = ‘) # f-строки работают в Python 3.6+ int variable = 1

Другие полезные функции

  • len(str(x)) — посчитает длину числа;
  • 1230 % 2 — если остаток от деления равен 0, то число четное;
  • range(0,5) — диапазон чисел от 0 до 5, по которому можно итерироваться;
  • int(str(123)[::-1]) — перевернет число (123 -> 321).

Очень поверхностно всё. Вообще не понял что за: «Целые числа в Python представлены только одним типом — PyLongObject «

Вообще не понял что за Комплексные числа complex , откуда они взялись и для чего их применять.

Также скорее всего большинство читателей не поняли, что такое двоичные, восьмеричные, шестнадцатеричные числа . Для чего их придумали . ?

Почему в начале не объяснили откуда взялись символы B, O, X ? 0b (0B) — для двоичного представления; 0o (0O) — для восьмеричного представления; 0x (0X) — для шестнадцатеричного представления.

Если бы это было бы написано также в начале, а не в конце темы , то легче было понять и запомнить: bin(x) — целое числа в двоичную строку; oct(x) — целое число в восьмеричную строку; hex(х) — целое число в шестнадцатеричную строку; Насчет hex не понял, если 0x .

Понравилось, что подчеркнули » Однако стоит помнить, что метод isdigit() не работает для отрицательных чисел и чисел с плавающей точкой.»

Как то так 🙂 Но всё равно прочитал эту тему и другие.

Источник

Читайте также:  What are local variables in php
Оцените статью