2013-11-02 129 views
1

所以我写了一些代码,然后发现有一个更简单的方法来使用format()函数来完成它。 我的代码是格式的正确布局

r = int(input("Please enter a number ")) 
c = int(input("Please enter a number ")) 
numberLength=len(str(r**c)) 
for i in range(1,r+1): 
    for j in range(1,c+1): 
     currentNumber = len(str(i**j)) 
     print(" "*((numberLength-currentNumber)+1),end="") 
     print((i**j),end="")  
    print('') 

但使用格式()函数是更简洁,但我不能得到正确格式的格式。

r = int(input("Please enter a number ")) 
c = int(input("Please enter a number ")) 
numberLength=len(str(r**c)) 
for i in range(1,r+1): 
    for j in range(1,c+1): 
     currentNumber = i**j 
     {0:>{1}}.format(currentNumber ,numberLength) 

如果您运行第一个片段,您会看到我想要实现的内容。表中每个数字之间的差距取决于程序中的最高数字。谢谢。

回答

2

使用end=' ',默认python使用一个新行,这就是为什么所有的数字打印在新的行。当嵌套循环结束时使用空白print()来引入新行。

for i in range(1,r+1): 
    for j in range(1,c+1): 
     currentNumber = i**j 
     print ("{0:>{1}}".format(currentNumber ,numberLength), end=' ') 
    print() 

演示:

Please enter a number 5 
Please enter a number 5 
    1 1 1 1 1 
    2 4 8 16 32 
    3 9 27 81 243 
    4 16 64 256 1024 
    5 25 125 625 3125 
+0

啊!所以我几乎是正确的,只是在错误的地方一些括号。谢谢你,小伙伴! – JamesDonnelly