2017-02-20 31 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