代码是:
def printMultiples(n):
i = 1
while (i <= 10):
print(n*i, end = ' ')
i += 1
n = 1
while (i<= 3):
printMultiples(n)
n += 1
输出为:
1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30
它应该像:
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
答案 0 :(得分:1)
在print
循环之外的printMultiples
末尾添加一个空的while (i <= 10):
。
答案 1 :(得分:0)
您的问题是您没有在每个倍数列表后打印新行。您可以通过将printMultiples
函数的末尾放在循环外的行
print()
答案 2 :(得分:0)
要使列对齐,您需要彻底改变方法。目前,printMultiples()
无法知道在每个数字后放置多少空格,因为它不知道在外部while
循环中调用它的次数。
你可能会做的是:
str()
函数对此有用一种更简单的方法,如果您只对感兴趣的柱状输出而不是精确的间距,则可以在每个数字之后打印足够的空间以容纳您期望输出的最大数字。所以你可能会得到:
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
(注意前三列中每个数字后面有三个空格,即使你不需要全部三个空格。)
更改现有代码可以更轻松。有关详细信息,请参阅Format String Syntax。
答案 3 :(得分:0)
如果您已经知道要填充宽度为3的数字,那么适合(和更多pythonic)的printMultiples
def printMultiples(n):
txt = "".join(["{0: <3d}".format(n*i) for i in range(1, 11)])
print(txt)
最好是允许宽度改变。然后你可以传递你喜欢的宽度,例如,你想要的最大数字的宽度
def printMultiples(n, width=3):
txt = "".join(["{0: <{1}d}".format(n*i, width) for i in range(1, 11)])
print(txt)
width = len(str(4 * 10)) + 1
for i in range(1, 4):
printMultiples(i, width )