Таблица умножения для смежных чисел Python - PullRequest
0 голосов
/ 10 марта 2020

Вывод должен выглядеть как эта таблица . Это таблица умножения из 9 строк на 12 столбцов (технически 13).

Первый столбец имеет ширину 10 символов и выровнен по левому краю. Все остальные столбцы имеют ширину пять символов и выровнены по правому краю.

Пока это мой код, но я пытаюсь отформатировать таблицу умножения так, чтобы она находилась в тех же строках, что и все остальные

Мне не разрешено использовать какие-либо внешние модули, такие как itertools или functools

 print(f"{'Column':<10s}", end = '\t'),
    for x in range(1,13):
        print(f"{x:5}", end='')


print(f"{'Column':<10s}", end = '\t'),
for x in range(1,13):
    print(f"{x:>5}", end='')

print() 
for x in range(1,10):
    print('Row',f'{x:<10}')


for row in range (1, 10):
    for col in range(1,13):
        print(f'{row*col:>5}', end="\t")

Вот что я получаю:

Column          1    2    3    4    5    6    7    8    9   10   11   12
Row 1         
Row 2         
Row 3         
Row 4         
Row 5         
Row 6         
Row 7         
Row 8         
Row 9         
    1       2       3       4       5       6       7       8       9      10      11      12       2       4       6       8      10      12      14      16      18      20      22      24       3       6       9      12      15      18      21      24      27      30      33      36       4       8      12      16      20      24      28      32      36      40      44      48       5      10      15      20      25      30      35      40      45      50      55      60       6      12      18      24      30      36      42      48      54      60      66      72       7      14      21      28      35      42      49      56      63      70      77      84       8      16      24      32      40      48      56      64      72      80      88      96       9      18      27      36      45      54      63      72      81      90      99     108   

Ответы [ 2 ]

0 голосов
/ 11 марта 2020

Для ответа @ jumifiki, если вы не понимаете * перед списком (чего я на самом деле тоже не понимаю), вы можете использовать метод join:

for row in range(1,10):
    print('Row',f'{row:<10}', end="\t\t")
    print('\t\t'.join([str(row*col) for col in range(1,13)]), end="\n")

Кроме того, чтобы сделать его еще меньше, вы можете использовать это:

for row in range(1,10):
    print(f'Row {row:<10} \t\t', '\t\t'.join([str(row*col) for col in range(1,13)]), end="\n")

Вы можете даже сделать однострочник !!!

print('\n'.join([f'Row {row:<10} \t\t ' + '\t\t'.join([str(row*col) for col in range(1,13)]) for row in range(1, 10)]))

ПРИМЕЧАНИЕ: В верхней части вывода, поскольку предполагается, что должен быть Column, вы можете использовать его для этой части:

print(f"{'Column':<12} ", end='\t\t ') # Use <12 becuse we have 2 more characters than each row label.
for c in range(1, 13):
    print(c, end="\t\t")
print()

Или однострочник:

print(f"{'Column':<12} \t\t", '\t\t'.join(map(str, range(1, 13))))

Если вы хотите, вы можете объединить оба этих оператора печати в ОДИН оператор печати, чтобы все это было напечатано ОДНОЙ ЛИНИЕЙ !! (это немного странно)

print(f"{'Column':<12} \t\t", '\t\t'.join(map(str, range(1, 13))) + '\n' + '\n'.join([f'Row {row:<10} \t\t ' + '\t\t'.join([str(row*col) for col in range(1,13)]) for row in range(1, 10)]))

(я предлагаю вам не использовать это, только для удобства чтения кода)

Надеюсь, это помогло вам!

0 голосов
/ 10 марта 2020

Цикл на столбцах должен быть вложен в цикл в строках

for x in range(1,10):
    print('Row',f'{x:<10}', end="\t")
    for col in range(1,13):
        print(f'{row*col:>5}', end="\t")

Лучше сделать это:

for row in range(1,10):
    print('Row',f'{row:<10}', end="\t")
    print(*[str(row*col) for col in range(1,13)], sep = "\t", end="\n")
...