2013-07-28 70 views
1

假設我有一個任意號碼:如何根據數字中的數字填充字符串?

my_number = 898 

我想創建一個循環,計數到這個數字,使用當前計數等於最大數量的數字的填充。換句話說,如果my_number的長度是5位數,那麼當計數爲1時,它應該讀取----1,其中每個-是填充中的一個空格。同樣,如果我們的數字是500,那麼它應該像這樣填充:--500。示例循環:

for i in range(my_number): 
    print('{}: Current Number'.format(i)) 

我希望我很清楚。我只是不知道這樣做的'pythonic'方式會是什麼。我想有一些乾淨的方式來做到這一點在Python中,但我不禁想到一個繁瑣的解決方案,將需要幾行代碼。

回答

5

你可以使用right-aligned format specifier它:

In [23]: num = 15 

In [24]: for x in range(num): 
    print("{0:>{1}}".format(x, len(str(num)))) 
   ....:      
 0 
 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
10 
11 
12 
13 
14 
+1

+1這是正確的做法。 – arshajii

+1

你可以做'{: - > {}}'使它破折號而不是空格:) – TerryA

+4

這恰好也是一個笑臉:D – TerryA

4

這樣的事情?

>>> my_number = 15 
>>> for i in range(my_number): 
...  strung = str(i) 
...  print('-'*(len(str(my_number))-len(strung))+strung) # If you want spaces instead of dashes, do print(' '*(len(....... 
... 
-0 
-1 
-2 
-3 
-4 
-5 
-6 
-7 
-8 
-9 
10 
11 
12 
13 
14 
+0

不,我相信他希望它這樣: 一個數字#的無填充。 兩位數字有一個 - 三有 - 等等 –

+0

@Haidro你有什麼理由將字符串改成串? (只是想知道) – sihrc

+0

@sihrc只是爲了避免重複調用'str' – TerryA