2011-07-12 21 views
0

我想沒有前導零的產生00000號至99999randint零的

number=randint(0,99999) 

我只能產生價值,當然是23而不是00023. 有從05年的意義上說,總是生成5個數字值的訣竅,還是我真的需要玩一個python-string-trick來填補前面缺少的0,以防len()< 5?

感謝您的閱讀和幫助,

回答

6

你必須做一個Python串招,因爲一個整數,本身不具有前導零

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

randint生成整數。那些簡單的數字沒有任何固有的視覺表現。只有從這些數字創建字符串(以及其他表示形式)時,纔會顯示前導零。

因此,你必須使用串函數來引導零(並且必須稍後處理這些字符串)。例如。之後不可能做任何計算。要創建這些字符串,你可以這樣做

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

所有的要旨是一個整數是不一樣的字符串,即使他們看起來很相似。

>>> '12345' == 12345 
False 
0

對於python,只有在打印/顯示它時,纔會生成一堆數字,並將其轉換爲字符串,因此可以使用填充。

您可以和您的存儲作爲number格式化字符串:

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

通過randint產生的數字是整數。整數是整數,打印時不帶前導零。

如果你想有一個字符串表示,它可以有前導零,請嘗試:

str(randint(0, 99999)).rjust(5, "0") 
0

另外,str(randint(0, 99999)).zfill(5),它提供了比字符串格式化(20%)和str.rjust表現略好(1%) 。