Как сделать цикл while для таблицы умножения? - PullRequest
2 голосов
/ 26 июня 2019

Я пытаюсь создать диаграмму умножения с циклом 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 Ответ

2 голосов
/ 26 июня 2019

Краткий ответ: вы используете x*z при расчете продукта, но вы используете y в качестве "счетчика строк" и z в качестве "счетчика столбцов", поэтому оно должно быть y*z. Кроме того, вы должны увеличить y после внутреннего цикла while.

Поскольку вы используете y в качестве "счетчика строк" и z в качестве "счетчика столбцов", вы должны вывести y * z в качестве ответа на это конкретное умножение. Кроме того, вы увеличиваете y слишком быстро: вы должны увеличить его после цикла while и сбросить z в 1, например:

print('While Loop')
print(<b>'x'</b>, end='\t')  # print a cross

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

<b>y = 1</b>
while y <= 12:
     print('')
     print(y,<b>end='\t'</b>)
     <b>z = 1</b>  # reset to 1
     while z <= 12:
          print(<b>y*z</b> ,end='\t')  # use y * z
          z += 1
     <b>y += 1</b>  # 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
...