2017-02-20 61 views
1

到目前爲止,我已經嘗試創建的2第一6倍數的表,應該給:如何在Python中創建水平乘法表?

2 4 6 8 10 12 

我對這段代碼現在看起來像:

i = 1 
while i <= 6: 
    print(2*i ,' \t' ,) 
    i = i + 1 

但這outputs他們vertically,不是horizontally所以:

2 
4 
6 
8 
10  
12  

有每個number之後還有一個tab

+0

可能重複的[python print()函數中的新行)(https://stackoverflow.com/questions/18179606/new-line-in-python-print-function) –

回答

0

將您的打印語句更改爲如下所示:print(2*i, end=' \t')end key參數設置結尾字符應該是什麼。如你所知,默認情況下,它是一個換行符。

1

您可以使用簡單的for-loop,因爲它們比while循環更適合此應用程序的Pythonic。

所以才loop通過16print之間的數字,numbermultiplied通過2用空格代替new-line字符。最後,您可以在最後打電話給另一個print,以在全部打印後移動到下一行。

for i in range(1, 7): 
    print(i * 2, end=' ') 

print() 

其中outputs

2 4 6 8 10 12 

如果你想要做這件事的一個行,你可以使用一個generatorstring.join()。你可能不完全理解這一點,但下面產生相同的結果:

print(" ".join(str(i*2) for i in range(1, 7))) 

這給:

2 4 6 8 10 12 

需要注意的是最後一件事情是,這種方法不產生均勻間隔表。爲了說明我的意思是 「均勻間隔」,下面是一些例子:

不是均勻分佈的:

1234 1 123 12 12312 123 

均勻間隔:

1234 1  123 12 12312 123 

使輸出print很像上面,我們可以使用.ljust

print("".join(str(i*2).ljust(3) for i in range(1, 7))) 

這給一個更好的表:

2 4 6 8 10 12 

最後,如果你想製作成function是比較通用的這一點,你可以這樣做:

def tbl(num, amnt): 
    print("".join(str(i*num).rjust(len(str(num*amnt))+1) for i in range(1,amnt+1))) 

和一些function的示例:

>>> tbl(3, 10) 
    3 6 9 12 15 18 21 24 27 30 
>>> tbl(9, 5) 
    9 18 27 36 45 
>>> tbl(10, 10) 
    10 20 30 40 50 60 70 80 90 100