рандинт с ведущими нулями - PullRequest
1 голос
/ 12 июля 2011

Я хочу генерировать числа от 00000 до 99999.

с

number=randint(0,99999)

Я генерирую только значения без начальных нулей, конечно, 23 вместо 00023. Есть ли хитрость, чтобы всегда генерировать 5-значные значения в смысле% 05d, или мне действительно нужно сыграть трюк с питоном-строкой, чтобы заполнить пропущенные 0 в начале, если len () <5? </p>

Спасибо за чтение и помощь,

B

Ответы [ 5 ]

7 голосов
/ 12 июля 2011

Вам придется выполнить трюк с питоном, так как целое число само по себе не имеет начальных нулей

number="%05d" % randint(0,99999)
3 голосов
/ 12 июля 2011

Числа, сгенерированные randint, являются целыми числами. Целые числа являются целыми числами и будут напечатаны без начальных нулей.

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

str(randint(0, 99999)).rjust(5, "0")
0 голосов
/ 12 июля 2011

В качестве альтернативы str(randint(0, 99999)).zfill(5), что обеспечивает немного лучшую производительность, чем форматирование строк (20%) и str.rjust (1%).

0 голосов
/ 12 июля 2011

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

Вы также можете хранить свои number в виде отформатированной строки:

 number="%05d" % random.randint(0,9999)
0 голосов
/ 12 июля 2011

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

Таким образом, вам нужно использовать функцию нанизанных, чтобы иметь ведущие нули (и вам придется разбираться с этими строками позжена).Например, впоследствии невозможно выполнить какие-либо вычисления.Для создания этих строк вы можете сделать что-то вроде

number = "%05d" % random.randint(0,99999)

Суть всего этого в том, что целое число не совпадает со строкой, даже если они выглядят одинаково.

>>> '12345' == 12345
False
...