2013-07-28 71 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