Python 如何制作乘法表的while循环?

Python 如何制作乘法表的while循环?,python,python-3.x,for-loop,while-loop,Python,Python 3.x,For Loop,While Loop,我正在尝试创建一个乘法图,其中包含一个while循环,但是我很难得到预期的输出 我已经尝试了我能想到的一切。我是新来的编码世界 #While loop print('While Loop') print() x = 1 y = 1 z = 1 while x <= 12: print(x ,end='\t') x += 1 while y <= 12: print('\n') print(y,'\t') y += 1 w

我正在尝试创建一个乘法图,其中包含一个while循环,但是我很难得到预期的输出

我已经尝试了我能想到的一切。我是新来的编码世界

#While loop
print('While Loop')
print()
x = 1
y = 1
z = 1
while x <= 12:
     print(x ,end='\t')
     x += 1

while y <= 12:
     print('\n')
     print(y,'\t')
     y += 1 
     while z <= 12:
          print(x*z ,end='\t')
          z += 1
     z = 0
     x = 1
#While循环
打印(‘While循环’)
打印()
x=1
y=1
z=1

while x简短回答:计算乘积时使用
x*z
,但使用
y
作为“行计数器”和
z
作为“列计数器”,因此它应该是
y*z
。此外,您应该在内部
while
循环之后增加
y

由于使用
y
作为“行计数器”,使用
z
作为“列计数器”,因此应打印
y*z
作为特定乘法的答案。此外,您过早地增加了
y
:您应该在
while
循环之后增加它,并将
z
重置为1,如:

print('While Loop')
print('x', end='\t')  # print a cross

x = 1
while x <= 12:
     print(x ,end='\t')
     x += 1

y = 1
while y <= 12:
     print('')
     print(y,end='\t')
     z = 1  # reset to 1
     while z <= 12:
          print(y*z ,end='\t')  # use y * z
          z += 1
     y += 1  # incerement after while loop
print()
或在函数中:

def mulgrid(n):
    print('x', end='\t')
    print('\t'.join(str(i) for i in range(1, n+1)))
    for r in range(1, n+1):
        print(r, end='\t')
        print('\t'.join(str(r*c) for c in range(1, n+1)))
例如:

>>> mulgrid(1)
x   1
1   1
>>> mulgrid(2)
x   1   2
1   1   2
2   2   4
>>> mulgrid(5)
x   1   2   3   4   5
1   1   2   3   4   5
2   2   4   6   8   10
3   3   6   9   12  15
4   4   8   12  16  20
5   5   10  15  20  25
>>> mulgrid(7)
x   1   2   3   4   5   6   7
1   1   2   3   4   5   6   7
2   2   4   6   8   10  12  14
3   3   6   9   12  15  18  21
4   4   8   12  16  20  24  28
5   5   10  15  20  25  30  35
6   6   12  18  24  30  36  42
7   7   14  21  28  35  42  49

你不应该使用
y*z
而不是
x*z
?这是一个二维图表,所以你只需要
x
y
@johnnymapp
x
是标题行,
y
z
是图表。你需要在第一个循环之前打印
x\t
,要在角上创建十字,我必须创建两个带有for和while循环的图表。我已经做了for循环,所以我只是停留在while循环上。将其切换为y*z确实有帮助,但图表顺序仍然很奇怪。@Megan:如前所述,您应该将y*z相乘,并在内部
循环后增加
y
,而
循环仍然不起作用<代码>1(单独)在第三行和
1 2 3…
在下一行,等等,我将
打印('\n')
替换为
打印(''')
,以获得更紧凑的格式
>>> mulgrid(1)
x   1
1   1
>>> mulgrid(2)
x   1   2
1   1   2
2   2   4
>>> mulgrid(5)
x   1   2   3   4   5
1   1   2   3   4   5
2   2   4   6   8   10
3   3   6   9   12  15
4   4   8   12  16  20
5   5   10  15  20  25
>>> mulgrid(7)
x   1   2   3   4   5   6   7
1   1   2   3   4   5   6   7
2   2   4   6   8   10  12  14
3   3   6   9   12  15  18  21
4   4   8   12  16  20  24  28
5   5   10  15  20  25  30  35
6   6   12  18  24  30  36  42
7   7   14  21  28  35  42  49