我正在尝试为作业分配带有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
我希望输出为
但我明白了
。
答案 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