Автор оригинала: Shubham Sayon.
В этой статье рассматривается ситуация, когда вы должны реализовать Целое число объект, который, по сравнению с использованием большего, чем оператор > , к любой другой существующей целочисленной цене в программе, всегда будет возвращать Правда Отказ
Перед погружением в возможные решения мы должны принять к сведению следующее:
Python 2 состоит из простые целые числа и длинные целые числа. Однако в Python 3 простые и длинные целые числа были объединены, и целое число в Python 3 такое же, как долго в Python 2. Следовательно, целочисленное значение не имеет максимальных и минимальных пределов в Python 3.
value1=9223372036854775807 print("value1=",value1) print(type(value1)) value2=value1+1 print("value2=",value2) print(type(value2))
Выход в Python 2:
value1= 9223372036854775807value2= 9223372036854775808L
Выход в Python 3:
value1= 9223372036854775807value2= 9223372036854775808
Примечание:
В 64-битной среде Sys.maxint Constant возвращает максимально возможное простое целочисленное значение в Python2, который является «9223372036854775807». Что-то выше, чем это значение будет автоматически преобразовано в длинный тип. Однако константу Sys.maxint была удалена в Python3, поскольку больше нет предела до значения целых чисел. В Python 3 Sys.maxsize можно использовать в качестве целого числа большего, чем любой другой практический список или строковый индекс в программе. Значение, возвращенное Sys.maxsize Constance, зависит от системы/платформы. Это означает, что для 32-битной платформы значение будет 2 ** 31 – 1 = 2147483647, в то время как в 64-битной платформе стоимость будет 2 ** 63 -.
Теперь позвольте нам исследовать, как мы можем использовать наибольшую целочисленную ценность в нашей программе:
Метод 1: Использование пользовательского класса
Все в Python – « объект». Кроме того, целые числа в Python3 нет ограничений. Таким образом, безопасно сказать, что целые числа в Python являются объектами без максимальных и минимальных пределов. Поэтому вероятный обходной путь для нашей задачи проблемы состоит в том, чтобы создать пользовательский класс и вернуть объект, который будет больше, чем любой другой объект в программе.
import functools import sys @functools.total_ordering class AlwaysGreater(object): def __le__(self, other): return False class MaximumInteger(AlwaysGreater, int): def __repr__(self): return 'MaximumInteger()' obj=MaximumInteger() print(isinstance(obj,int)) print("1. Is obj greater than sys.maxsize?",obj > sys.maxsize) print("2. Sorting list: [100,0,obj,922337036854775808,sys.maxsize] in ascending order: ") print(sorted([100,0,obj,9223372036854775808,sys.maxsize]))
Выход:
True 1. Is obj greater than sys.maxsize? True 2. Sorting list: [100,0,obj,922337036854775808,sys.maxsize] in ascending order: [0, 100, 9223372036854775807, 9223372036854775808, MaximumInteger()]
Метод 2: Использование Python Infinity
Положительная бесконечность в Python – неопределенное число, которое больше, чем любое другое значение в программе. Чтобы представлять любое число в программе, которая выше, чем все остальные числа в программе, мы можем использовать бесконечность Python.
Следующий код представляет вышеуказанную концепцию:
import sys value=float('Inf') print("1. Is value greater sys.maxsize? :",value>sys.maxsize) print("2. Sorting list: [100,0,value,922337036854775808,sys.maxsize] in ascending order: ") print(sorted([100,0,value,9223372036854775808,sys.maxsize]))
Выход:
1. Is value greater sys.maxsize? : True 2. Sorting list: [100,0,value,922337036854775808,sys.maxsize] in ascending order: [0, 100, 9223372036854775807, 9223372036854775808, inf]
Отказ от ответственности: На данный момент нет способа представления бесконечности Python в качестве целочисленного значения. Однако, поскольку значения Python Float могут быть использованы для представления бесконечного целого числа. Следовательно, Int (float (‘inf’)) приведет к переполнению: не может преобразовать поплавок бесконечность в целое число.
Вы можете узнать больше о Python Infinity здесь.
Способ 3: Использование Infinity.infinity
Еще одна работа для получения наибольшего целочисленного значения – использование целочисленного значения Konsta VeseStreinen для Python, которое можно сравнить с любым объектом. Единственным вопросом с этим методом это не наследует от INT. Чтобы преодолеть эту проблему, мы можем создать подкласс, а затем сделать его наследующуюся от INT, как указано ниже:
from infinity import Infinity import sys class IntInfinity(Infinity, int): pass print(isinstance(IntInfinity(), int)) obj = IntInfinity() print("1. Is obj greater than sys.maxsize?", obj > sys.maxsize) print("2. Sorting list: [100,0,obj,922337036854775808,sys.maxsize] in ascending order: ") print(sorted([100, 0,obj, 9223372036854775808, sys.maxsize]))
Выход:
True 1. Is obj greater than sys.maxsize? True 2. Sorting list: [100,0,obj,922337036854775808,sys.maxsize] in ascending order: [0, 100, 2147483647, 9223372036854775808, inf]
Вывод
Важно отметить, что целые числа в Python неограничены. Даже значения Sys.maxsize зависят от платформы, которую они выполняются, как упоминалось ранее. Это означает, что Sys.maxsize + 1> sys.maxsize. Предлагаемые методы являются вероятными обходами для создания целого числа большего, чем любое другое целое число в программе.
Я надеюсь, что вы нашли эту статью в блоге полезны, и это помогло вам. Будьте настроены на будущие обновления.
Я профессиональный Python Blogger и Content Creator. Я опубликовал многочисленные статьи и создал курсы в течение определенного периода времени. В настоящее время я работаю полный рабочий день, и у меня есть опыт в областях, таких как Python, AWS, DevOps и Networking.
Вы можете связаться со мной @: