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

Содержание:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:  Как долго сидеть на корточках

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

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

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

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

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

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

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

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

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

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

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

Целые числа

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

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

Для того чтобы записать действительное число в Python есть числа с плавающей точкой. Работая в программе с подобными величинами, можно получать более точные данные при арифметических подсчетах. Чтобы инициализировать объект, который содержит вещественное число, необходимо присвоить ему значение, где целая и дробная части разделены символом точки. В данном примере показано создание переменной f:

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

В языке программирования Python также поддерживается работа с комплексными числами. Подобная информация представлена в виде пары значений: действительной и мнимой части, которые разделяются символом операции сложения. Также в завершении мнимой составной части комплексного числа обязательно должна стоять буква j. В следующем фрагменте кода демонстрируется создание комплексной переменной c и выводится вся информация о ней:

Можно получить действительную и мнимую часть чисел отдельно. Для этого следует использовать real и image:

Системы счисления

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

Приведение типов

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

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

Манипуляции над числовыми значениями в языке программирования Python выполняются благодаря множеству различных операций, символьные обозначения которых, как правило, совпадают с аналогами из традиционной математики. Таким образом, можно прибавлять, отнимать, умножать, делить, находить остаток от деления и возводить в степень числовые значения любых разновидностей. Ознакомиться с основными типами операций, которые выполняются над цифровыми значениями, можно из следующей небольшой таблицы:

Операция
Назначение
a + b Сложение a и b
a – b Разница между a и b
a * b Умножение a на b
a / b Деление a на b
a % b Остаток от деления a на b
a // b Целая часть от деления a и b
a ** b Возведение a в степень b

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

Операция
Назначение
a & b Побитовое И для a и b
a | b Побитовое ИЛИ для a и b
a ^ b Исключающее ИЛИ для a и b

a

Инверсия битов для a a > b Побитовый сдвиг вправо для a на b

Также для более эффективной обработки числовых данных в Python были добавлены особые методы, позволяющие всего за одно действие осуществлять множество сложных операций. К наиболее популярным из них относятся методы, предназначенные для быстрого нахождения квадратного корня, модуля, а также округления числа. Чтобы воспользоваться некоторыми арифметическими функциями, необходимо подключить стандартную библиотеку math при помощи вызова import math . Список популярных методов представлен в данной таблице:

Метод Назначение
sqrt(a) Квадратный корень из a
log(a) Натуральный логарифм из a
fabs(a) Возвращает модуль a
round(a) Округляет a до ближайшего целого
round(a, b) Округляет a до b знаков после точки
floor(a) Округляет a до меньшего целого значения
ceil(a) Округляет a до большего целого значения
isfinite(a) Проверяет, является ли a числом
modf(a) Возвращает целую и дробную части a
sin(a) Синус угла a, указанного в радианах
cos(a) Косинус угла a, указанного в радианах
tan(a) Тангенс угла a, указанного в радианах
Читайте также:  Черный список в вайбере как работает

Функция fabs модуля math вначале пытается привести аргумент к вещественному типу (float), и только потом вычисляет модуль. Для вычисления модуля числа так же есть стандартная функция abs.

Ввод числа с клавиатуры

Для того чтобы получить числовые данные от пользователя используется стандартный метод input. Его вызов позволяет получать ввод информации с клавиатуры, который выполняется во время запуска программы на компьютере. В качестве аргумента для этого метода можно использовать строку, предлагающую пользователю ввести числовые сведения. Ниже показан пример того, как ввести в Pyhon с клавиатуры число. Переменная n получает значение и отображается на экране с помощью print:

Максимальное значение

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

Заключение

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

Системы счисления

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

Десятичные целые числа создаются, как обычно, с помощью десятичных цифр:

причем, в десятичной системе счисления ни одно число, кроме нуля не может начинаться с цифры (0), что в общем-то и ежу понятно, но это значит что отбрасывания незначащих нулей не происходит, а их наличие приводит к ошибке:

Двоичные числа состоят из префикса 0b (или 0B ) и двоичных цифр: (0) и (1):

Восьмеричные числа начинаются с префикса 0o ( 0O ) и могут содержать только восьмиричные цифры: (0), (1), (2), (3), (4), (5), (6) и (7):

Шестнадцатеричные числа начинаются с префикса 0x ( 0X ) и могут содержать как все десятичные цифры, так и символы латинского алфавита: a, b, c, d, e, f (или A, B, C, D, E, F ), которые в данном случае выступают в роли цифр:

В языках со строгой типизацией необходимо указывать как тип числа, так и то, что создаваемый объект сам является числом. Но в Python такой необходимости нет, интерпретатор сам, на основе анализа литералов целых чисел, способен понять что перед ним: число или нет, целое или вещественное, восьмеричное или двоичное.

Кстати, благодаря встроенной функции int() мы можем перевести в десятичную систему счисления, любое число представленное в другой системе счисления с основанием меньшим (37). Интересующее число указывается в виде строки в первом аргументе, а система счисления в котором оно представлено в виде целого числа во втором аргументе:

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

Целые числа поддерживают следующие математические операции, которые отсортированы по убыванию приоритета:

Операция Результат Замечание
1 x ** y возводит x в степень y (I)
2 pow(x, y[, z]) возводит x в степень y по модулю z, где z – необязательный аргумент (I)
3 divmod(x, y) возвращает кортеж с парой чисел (x // y, x % y) (II)
4 x.conjugate() возвращает (ar) — число, которое комплексно сопряжено с (x)
5 complex(re, im) преобразует re в комплексное число (по умолчанию im = 0 ) (VI)
6 float(x) преобразует x в вещественное число (число с плавающей точкой) (VI)
7 int(x) переобразует x в целое число, представленное в десятичной системе счисления (V)(VI)
8 abs(x) абсолютное значение (модуль) числа x
9 +x делает число x положительным
10 -x делает число x отрицательным
11 x % y остаток от деления x на y (II)
12 x // y результат целочисленного деления x на y (III) (II)
13 x / y результат "истинного" деления x на y (IV)
14 x * y произведение x и y
15 x — y разность x и y
16 x + y сумма x и y

Важно: приоритет математических операций выше побитовых логических операций и операций сравнения.

I. возведение (0) в степень (0) возвращает (1):

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

II. функция divmod() и операция % , // не работают для комплексных чисел. Для вас это может быть и очевидно, но не пользователя для которого вы пишите программу.

Читайте также:  Как добавить рисунок в html

III. если оба числа типа int то и результат будет типа int. Данная операция всегда возвращает целое число, т.е. если число x можно представить в виде d*y + r , то x//y = d (r – остаток от деления). Так же следует иметь ввиду, что результат данной операции всегда округляется в сторону минус бесконечности:

Это немного сбивает с толку, но проверив результат по формуле x = d*y + r , вы убедитесь что все верно.

IV. даже если оба числа типа int, то результат все равно будет преобразован к типу float.

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

VI. строго говоря эти функции не являются математическими, но они могут учавствовать в математических выражениях Python и поэтому должны обладать приоритетом.

Логические побитовые операции

Фактически, если число можно перевести в двоичную систему счисления, значит его можно рассматривать как двоичные данные. Учитывая, что такие данные состоят из нулей и единиц, которые интерпретируются как логические значения True и False, мы можем выполнять над ними логические операции. Логические операции выполняются по отдельным битам соответствующих разрядов. Если в операции учавствуют числа с разным количеством разрядов, то недостающие разряды дополняются нулями слева.

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

(побитовое НЕ) примененного, скажем, к числу 0b111 должно быть число 0b000 , но вместо этого мы видим число дополнительный код которого соответствует данной операции:

В таблице перечислены все побитовые операции в порядке убывания их приоритета:

Операция Результат Замечание
1

x

инвертирование битов x (I) 2 x >> n сдвиг битов числа x вправо на n разрядов (II)(III) 3 x сдвиг битов числа x влево на n разрядов (II)(IV) 4 x & y побитовое И чисел x и y 5 x ^ y побитовое исключающее ИЛИ чисел x и y 6 x | y побитовое ИЛИ чисел x и y

Важно: приоритет побитовых операций ниже математически, но выше операций сравнения.

I. унарные операции

, + и — имеют одинаковый приоритет.

II. отрицательное значение в выражеиях x и x >> n приведет к ошибке и вызовет исключение ValueError.

III. операция x эквивалентна команде x*pow(2, n) , но проверка переполнения в этой команде не выполняется:

IV. операция x >> n эквивалентна команде x // pow(2, n) , но проверка переполнения в этой команде не выполняется:

Операции сравнения

Для сравнения чисел, доступно (8) операций сравнения, причем все они имеют одинаковый приоритет:

Операция Результат Замечание
1 x True если x меньше y, иначе False
2 x True если x меньше или равно y, иначе False
3 x > n True если x больше y, иначе False
4 x >= n True если x больше или равно y, иначе False
5 x == y True если x равно y, иначе False
6 x != y True если x не равно y, иначе False
7 x is y True если x и y это один и тот же объект, иначе False
8 x is not y True если x и y это не один и тот же объект, иначе False

Важно: приоритет операций сравнения ниже математических и побитовых операций.

Наряду с оператором сравнения значений чисел == и != , в Python имеются операторы is и is not , которые позволяют выяснить, являются сравниваемые значения одним и тем же объектом или нет. Например:

Не смотря на то, что значения a и b равны, в памяти компьютера они хранятся как разные объекты:

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

В Python сравнение x > y and y > z является эквивалентным x > y > z т.е. сравнения связаные оператором and в произвольные цепочки могут быть записаны в более компактной форме. Выполнение таких выражений начинается слева направо и останавливается как только будет получено первое значение False. Это означает, что если в выражении x > y > z сравнение x > y вернет False то сравнение y > z выполняться не будет.

Методы целых чисел

Целые числа – это объекты, которые обладают следующими методами:

Параметр length задает необходимое количество байтов, а byteorder определяет в каком порядке возвращать байты: значение ‘big’ – от старшего к младшему, ‘little’ – от младшего к старшему. Оба параметра являются обязательными:

Если указанных байтов недостаточно для представления числа, то будет вызвано исключение OverflowError. А что бы узнать и (или) использовать порядок байтов который использует машина, выполняющая код используйте sys.byteorder .

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

Если signed = False , а число является отрицательным, то будет вызвано исключение OverflowError.

Оставьте ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *