randint与前导零

4
我希望能够生成从00000到99999的数字。
使用:
number=randint(0,99999)

我只生成没有前导零的数值,当然是 23 而不是 00023。 有没有一种技巧可以始终生成5位数字,如 %05d 的意思,或者我真的需要使用 Python 字符串技巧,在长度小于5时填充前面缺少的0?
感谢阅读和帮助,
B
5个回答

11
你需要进行一种Python字符串技巧,因为整数本身没有前导零。
number="%05d" % randint(0,99999)

3
randint生成的数字是整数。整数是整数,将被打印时不带前导零。
如果你想要一个字符串表示,可以有前导零,请尝试:
str(randint(0, 99999)).rjust(5, "0")

1

或者,str(randint(0, 99999)).zfill(5)提供比字符串格式化(20%)和str.rjust(1%)稍微更好的性能。


0

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

因此,你必须使用一个字符串函数来拥有前导零(并且必须稍后处理这些字符串)。例如,之后不可能进行任何计算。要创建这些字符串,您可以执行类似以下操作:

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

所有的内容可以概括为:整数和字符串虽然看起来相似,但实际上并不相同。
>>> '12345' == 12345
False

0
对于Python,您正在生成一堆数字,只有在打印/显示时才会将其转换为字符串,因此它可以具有填充。 您也可以将您的“number”存储为格式化字符串:
 number="%05d" % random.randint(0,9999)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接