3

我想生成从 00000 到 99999 的数字。

number=randint(0,99999)

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

感谢阅读和帮助,

4

5 回答 5

10

您将不得不做一个 python-string-trick 因为整数本身没有前导零

number="%05d" % randint(0,99999)
于 2011-07-12T13:35:03.290 回答
3

生成的数字randint是整数。整数是整数,打印时不带前导零。

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

str(randint(0, 99999)).rjust(5, "0")
于 2011-07-12T13:35:39.847 回答
0

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

于 2011-07-12T14:08:21.493 回答
0

randint生成整数。这些都是简单的数字,没有任何固有的视觉表示。仅当您从这些数字(以及其他表示形式)创建字符串时,前导零才可见。

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

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

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

>>> '12345' == 12345
False
于 2011-07-12T13:35:20.763 回答
0

对于python,您正在生成一堆数字,只有当您打印/显示它时它才会转换为字符串,因此它可以有填充。

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

 number="%05d" % random.randint(0,9999)
于 2011-07-12T13:35:29.503 回答