到目前为止,我已经尝试创建的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
。
到目前为止,我已经尝试创建的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
。
将您的打印语句更改为如下所示:print(2*i, end=' \t')
end
key参数设置结尾字符应该是什么。如你所知,默认情况下,它是一个换行符。
您可以使用简单的for-loop
,因为它们比while
循环更适合此应用程序的Pythonic。
所以才loop
通过1
和6
和print
之间的数字,number
multiplied
通过2
用空格代替new-line
字符。最后,您可以在最后打电话给另一个print
,以在全部打印后移动到下一行。
for i in range(1, 7):
print(i * 2, end=' ')
print()
其中outputs
:
2 4 6 8 10 12
如果你想要做这件事的一个行,你可以使用一个generator
和string.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
可能重复的[python print()函数中的新行)(https://stackoverflow.com/questions/18179606/new-line-in-python-print-function) –