如何对乘法表进行while循环?

时间:2019-06-26 20:40:54

标签: 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 
     while z <= 12:
          print(x*z ,end='\t')
          z += 1
     z = 0
     x = 1

我希望输出为 correctchart

但我明白了

incorrectchart

1 个答案:

答案 0 :(得分:2)

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

由于将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()

使用for循环

还有一些小的格式化问题。例如,您应该首先print('X', end='\t'),因为否则列将不正确匹配。

话虽如此,您使事情变得比应做的要困难得多。您可以改为使用for循环,例如:

print('x', end='\t')
print('\t'.join(str(i) for i in range(1, 13)))

for r in range(1, 13):
    print(r, end='\t')
    print('\t'.join(str(r*c) for c in range(1, 13)))

或在函数中:

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