как узнать длину числа в python

Длина целого числа в Python

В Python, как найти число цифр в целом числе?

16 ответов

Python 2.* int занимает 4 или 8 байтов (32 или 64 бита), в зависимости от вашей сборки Python. sys.maxint ( 2**31-1 для 32-битных целых, 2**63-1 для 64-битных целых) скажут вам, какую из двух возможностей можно получить.

В Python 3 int s (как long s в Python 2) могут принимать произвольные размеры вплоть до объема доступной памяти; sys.getsizeof дает хорошее представление для любого заданного значения, хотя действительно также учитывает некоторые фиксированные накладные расходы:

Если, как показывают другие ответы, вы думаете о каком-то строковом представлении целочисленного значения, просто возьмите len этого представления, будь то в базе 10 или иначе!

Отформатируйте в научной записи и вычеркните экспоненту:

Я не знаю о скорости, но это просто.

Обратите внимание на количество значащих цифр после десятичной дроби («5» в «.5e» может быть проблемой, если округлить десятичную часть научной нотации до другой цифры. Я установил ее произвольно большим, но мог бы отразить длина наибольшего числа, о котором вы знаете.

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

(функция libc требует настройки, которую я не включил)

size_exp спасибо Брайану Преслопски, size_str спасибо GeekTantra, а size_math спасибо Джону Ла Руи

(Отказ от ответственности: функция запускается на входах от 1 до 1 000 000)

Спасибо @SetiVolkylany за внимание к этому ограничению. Удивительно, как казалось бы правильные решения имеют недостатки в деталях реализации.

Предполагая, что вы запрашиваете наибольшее число, которое вы можете сохранить в целом числе, значение зависит от реализации. Я полагаю, что вы не думаете так при использовании Python. В любом случае, довольно большое значение может быть сохранено в «целое число» Python. Помните, Python использует утку печатать!

Edit: Я дал свой ответ перед разъяснением, что спрашивающий хотел количество цифр. Для этого я согласен с методом, предложенным принятым ответом. Больше нечего добавить!

Без сомнения, для потомков самое медленное решение этой проблемы:

Ну, без преобразования в строку я бы сделал что-то вроде:

Минималистская рекурсия FTW

Это можно быстро сделать для целых чисел, используя:

Который получает длину строки абсолютного значения «1234567890»

abs возвращает число БЕЗ любых отрицательных значений (только величина числа), str преобразует / преобразует его в строку, а len возвращает длину строки этой строки.

Если вы хотите, чтобы он работал для поплавков, вы можете использовать одно из следующих:

Для дальнейшего использования.

Все решения math.log10 доставят вам проблемы.

Решение состоит в том, чтобы использовать метод счетчика while для чисел выше этого порога.

Чтобы сделать это еще быстрее, создайте 10 ^ 16, 10 ^ 17 и так далее и сохраните в виде переменных в списке. Таким образом, это похоже на поиск по таблице.

Как уже упоминалось, дорогой пользователь @Calvintwr, функция math.log10 имеет проблему с числом вне диапазона [-999999999999997, 999999999999997], где мы получаем ошибки с плавающей запятой. У меня была эта проблема с JavaScript (Google V8 и NodeJS) и C (компилятор GNU GCC), поэтому решение ‘purely mathematically’ здесь невозможно.

На основе этой gist и ответ уважаемый пользователь @Calvintwr

Я проверил это на номерах с длиной до 20 (включительно) и все в порядке. Этого должно быть достаточно, поскольку длина целочисленного числа в 64-битной системе равна 19 ( len(str(sys.maxsize)) == 19 ).

Все примеры кодов, протестированных на Python 3.5

Источник

Длина целого числа в Python

в Python, как вы находите количество цифр в целое число?

15 ответов:

также обрабатывать нулевые и отрицательные числа

вы, вероятно, хотите поместить это в функцию 🙂

вот некоторые ориентиры. Элемент len(str()) уже позади даже для совсем небольших чисел

вся математика.log10 решения дадут вам проблемы.

решение заключается в использовании метода счетчика while для чисел выше этого порога.

чтобы сделать это еще быстрее, создайте 10^16, 10^17 и так далее и сохраните как переменные в списке. Таким образом, это похоже на стол уважать.

Python 2.* int S занимает 4 или 8 байт (32 или 64 бита), в зависимости от вашей сборки Python. sys.maxint ( 2**31-1 для 32-битных ints, 2**63-1 для 64-битных ints) расскажет вам, какая из двух возможностей получает.

В Python 3, int s (например long s в Python 2) может принимать произвольные размеры до объема доступной памяти; sys.getsizeof дает вам хорошую индикацию для любого данного значения, хотя это тут также подсчитайте некоторые фиксированные накладные расходы:

если, как и другие ответы, вы думаете о некотором строковом представлении целочисленного значения, то просто возьмите len этого представления, будь то в базе 10 или иначе!

пусть будет n тогда количество цифр в n дано:

спасибо @SetiVolkylany за привлечение моего внимания к этому ограничению. Свой удивительно, как, казалось бы, правильные решения имеют оговорки в деталях реализации.

Ну, без преобразования в строку я бы сделал что-то вроде:

минималистская рекурсия FTW

как уже упоминалось Уважаемый пользователь @Calvintwr, функция math.log10 имеет проблему в числе за пределами диапазона [-999999999999997, 999999999999997], где мы получаем ошибки с плавающей запятой. У меня была эта проблема с JavaScript (Google V8 и NodeJS) и C (компилятор GNU GCC), поэтому a ‘purely mathematically’ решение здесь невозможно.

на основе этого суть и ответ Уважаемый пользователь @Calvintwr

я проверял это на номера длиной до 20 (включительно) и все в порядке. Этого должно быть достаточно, так как длина max integer number в 64-битной системе равна 19 ( len(str(sys.maxsize)) == 19 ).

все примеры кодов, протестированных с Python 3.5

для потомков, без сомнения, самое медленное решение этой проблемы:

Источник

Длина целого числа в Python

в Python, как вы находите количество цифр в целом числе?

15 ответов

без преобразования в строку

также обрабатывать нулевые и отрицательные числа

вы, вероятно, захотите поместить это в функцию:)

вот некоторые ориентиры. The len(str()) уже отстает даже для совсем небольших чисел

вся математика.решения log10 дадут вам проблемы.

решение состоит в том, чтобы использовать метод счетчика while для чисел выше этого порога.

чтобы сделать это еще быстрее, создайте 10^16, 10^17 и так далее и сохраните как переменные в списке. Таким образом, это как стол уважать.

Python 2.* int s возьмите 4 или 8 байт (32 или 64 бита), в зависимости от вашей сборки Python. sys.maxint ( 2**31-1 для 32-битных ints, 2**63-1 для 64-битных ints) скажет вам, какая из двух возможностей получает.

В Python 3, int s (как long s в Python 2) может принимать произвольные размеры до объема доступной памяти; sys.getsizeof дает вам хорошее указание для любого заданного значения, хотя это тут также подсчитайте некоторые фиксированные накладные расходы:

если, как показывают другие ответы, вы думаете о некотором строковом представлении целочисленного значения, то просто возьмите len этого представления, будь то в базе 10 или иначе!

пусть будет n тогда количество цифр в n дано:

спасибо @SetiVolkylany за attenstion этого ограничения. Свой удивительно, как, казалось бы, правильные решения имеют оговорки в деталях реализации.

Ну, без преобразования в строку я бы сделал что-то вроде:

минималистская рекурсия FTW

как уже упоминалось Уважаемый пользователь @Calvintwr, функция math.log10 имеет проблему в числе вне диапазона [-999999999999997, 999999999999997], где мы получаем ошибки с плавающей запятой. У меня была эта проблема с JavaScript (Google V8 и NodeJS) и C (компилятор GNU GCC), поэтому ‘purely mathematically’ решение здесь невозможно.

основываясь на этом суть и ответ Уважаемый пользователь @Calvintwr

я проверял это по номерам длиной до 20 (включительно) и все в порядке. Этого должно быть достаточно, потому что максимальное целое число длины в 64-битной системе равно 19 ( len(str(sys.maxsize)) == 19 ).

все примеры кодов, протестированных с Python 3.5

Источник

Числа в Python (FAQ)

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

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

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

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

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

>>> 134523345234252523523478777 ** 2 18096530413013891133013347014216107772438771969415729

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

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

Числа типа 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)

Отдельные части комплексного числа доступны через атрибуты 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

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

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

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

Ввод чисел

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

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

Вывод чисел

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

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

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

Источник

Как узнать длину числа в python

2. Срезы (slices)

Срез (slice) — извлечение из данной строки одного символа или некоторого фрагмента подстроки или подпоследовательности.

Номера символов в строке (а также в других структурах данных: списках, кортежах) называются индексом.

Или в виде таблицы:

Строка SHello
ИндексS[0]S[1]S[2]S[3]S[4]
ИндексS[-5]S[-4]S[-3]S[-2]S[-1]

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

На самом деле в питоне нет и переменных. Есть лишь имена, которые связаны с какими-нибудь объектами. Можно сначала связать имя с одним объектом, а потом — с другим. Можно несколько имён связать с одним и тем же объектом.

3. Методы

3.1. Методы find и rfind

Аналогично, метод rfind возвращает индекс последнего вхождения данной строки (“поиск справа”).

3.2. Метод replace

3.3. Метод count

Источник

Добавить комментарий

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