我想生成从 00000 到 99999 的数字。
和
number=randint(0,99999)
我只生成没有前导零的值,当然是 23 而不是 00023。在 %05d 的意义上,是否有一个技巧可以生成总是 5 个数字值,或者我真的需要玩一个 python-string-trick 来填充如果 len() < 5,前面缺少 0?
感谢阅读和帮助,
乙
您将不得不做一个 python-string-trick 因为整数本身没有前导零
number="%05d" % randint(0,99999)
生成的数字randint
是整数。整数是整数,打印时不带前导零。
如果您想要一个可以有前导零的字符串表示,请尝试:
str(randint(0, 99999)).rjust(5, "0")
或者,str(randint(0, 99999)).zfill(5)
它提供的性能略好于字符串格式化 (20%) 和 str.rjust (1%)。
randint
生成整数。这些都是简单的数字,没有任何固有的视觉表示。仅当您从这些数字(以及其他表示形式)创建字符串时,前导零才可见。
因此,您必须使用一个字符串函数来获得前导零(并且稍后必须处理这些字符串)。例如,之后不可能进行任何计算。要创建这些字符串,您可以执行以下操作
number = "%05d" % random.randint(0,99999)
所有这一切的要点是整数与字符串不同,即使它们看起来相似。
>>> '12345' == 12345
False
对于python,您正在生成一堆数字,只有当您打印/显示它时它才会转换为字符串,因此它可以有填充。
您也可以将您的存储number
为格式化字符串:
number="%05d" % random.randint(0,9999)