2011-03-10 52 views
4

我们如何使用python生成四位数计数器?Python四位计数器

range(0,9999) 

将有1位数字,2位数字和3位数字。我们只需要4位数字。

即0000至9999

当然,最简单的pythonic方法。

+1

你'范围()'调用并不实际生产9999 ,但在9998处停止。这是因为'range()'的“end”参数是一个小于限制,例如在“生成所有以0开始并且小于9999的数字”中。您需要使用10000。 – 2011-03-10 07:06:42

+0

明白了。谢谢。 – LynxLee 2011-03-10 07:09:12

+2

如果您选择字符串格式,请[%s](http://docs.python.org/library/stdtypes.html#str.format)str.format(* args,** kwargs)为%formatting.' [ “{0:0> 4}”。格式(i)为xrange(10)中的i]' – Paolo 2011-03-10 08:42:56

回答

10

格式化要用0填充的字符串。为了获得0〜9999填充列表以及零:

["%04d" % x for x in range(10000)] 

同样的事情适用于5,6,7,8零等。注意,这会给你一个字符串列表。没有办法让整数变量填充零,所以字符串尽可能的接近。

相同格式的操作也适用于单个整数。

4

你不知道。输出或处理时,您的格式为4位数字。

print '%04d' % val 
11

也许str.zfill也可以帮助你:

>>> "1".zfill(4) 
'0001' 
+0

这需要首先将整数从范围(0,10000)转换为字符串..... – eyquem 2011-03-10 10:31:32

+0

@eyquem:你是对的! – nkint 2011-03-10 12:14:30

0

而且要真正走极端,

In [8]: class Int(int): 
    ...:  def __repr__(self): 
    ...:   return self.__str__().zfill(4) 
    ...:  
    ...:  

In [9]: a = Int(5) 

In [10]: a 
Out[10]: 0005 
+1

有人暴露在太多的Java :) – jkerian 2011-03-10 09:12:57

+0

如何获得范围内的4位数字(0,10000)? xrange中的x(Int(0),Int(1000))''不起作用。 – eyquem 2011-03-10 09:58:44

1

,如果你想选择字符串格式化,因为很多建议,并且您使用的是Python不小于2.6,请注意在其最新版本中使用字符串格式。相反的:

["%04d" % idx for idx in xrange(10000)] 

it is suggested来选择:

["{0:0>4}".format(i) for i in xrange(1000)] 

这是因为后者的方式是在Python 3使用的默认成语格式字符串,我想这是一个好主意,以提高你的代码可移植到未来的Python版本。

正如有人在评论中说,在Python 2.7+没有必要指定位置参数,所以这也是有效的:

["{:0>4}".format(i) for i in xrange(1000)]