带有前导零的randint

时间:2011-07-12 13:30:08

标签: python random zero-pad

我想生成00000到99999之间的数字。

number=randint(0,99999)

我只生成没有前导零的值,当然是23而不是00023。 有没有一个技巧可以生成%05d意义上的总是5位数值,或者我真的需要播放python-string-trick来填充前面缺少的0,以防len()< 5?

感谢阅读和帮助,

5 个答案:

答案 0 :(得分:7)

你必须做一个python-string-trick,因为整数本身没有前导零

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

答案 1 :(得分:3)

randint生成的数字是整数。整数是整数,将在没有前导零的情况下打印。

如果你想要一个可以有前导零的字符串表示,请尝试:

str(randint(0, 99999)).rjust(5, "0")

答案 2 :(得分:0)

randint生成整数。这是简单的数字,没有任何固有的视觉表现。只有从这些数字创建字符串(以及另一种表示)时,前导零才可见。

因此,您必须使用串行函数来获得前导零(并且稍后必须处理这些字符串)。例如。事后不可能做任何计算。要创建这些字符串,您可以执行类似

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

所有这一切的要点是整数与字符串不同,即使它们看起来相似。

>>> '12345' == 12345
False

答案 3 :(得分:0)

对于python,你生成了一堆数字,只有当你打印它/ display时才转换成字符串,因此它可以有填充。

您也可以将number存储为格式化字符串:

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

答案 4 :(得分:0)

或者,str(randint(0, 99999)).zfill(5),它提供的性能略高于字符串格式(20%)和str.rjust(1%)。