В Python всё является объектами.
Это значит что у каждой сущности есть тип и какие-либо методы.
Мы знаем что есть методы у строк
>>> 'string'.upper()
у списков
>>> [1,2,3].count(2)
у словарей
>>> {"key": 123}.items()
А есть ли какие-то методы у простых чисел? Не много, но есть!
Например, возьмём простой int
>>> a = 22
Метод bit_length() покажет сколько потребуется бит для отображения данного числа в двоичном представлении, исключая ведущие нули.
>>> a.bit_length()
5
Проверяем
>>> bin(a).lstrip('-0b')
'10110'
Всё верно.
Проверим float
>>> b = 10.5
Мы можем проверить есть ли у числа дробная часть
>>> b.is_integer()
False
Получить наш float в виде простой десятичной дроби
>>> b.as_integer_ratio()
(21, 2)
Конечно же Python не имеет типа "десятичная дробь", поэтому мы просто получаем кортеж из двух элементов: числитель и знаменатель.
У int тоже есть такой метод (Python3.8+), но он работает "хитро". Целое число всегда равно дроби где в числителе это же число а в знаменателе 1. Поэтому данный метод у int всегда возвращает (x, 1). 😕
Кстати, чтобы обойтись без переменной просто возьмите число в скобки
>>> (10.0).is_integer()
True
#tricks