2011-03-10 128 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)]