簡體   English   中英

如何使用嵌套for循環打印乘法表

[英]How to print multiplication table using nested for loops

我需要一些幫助來使用嵌套 for 循環打印乘法表。 我現在的代碼是:

for x in range(1,10):
   print("  ", x, end = '')
   print()
for row in range(1, 10):
    for col in range(1, 10):
        num = row * col
        if num < 10:
            empty = "  "
        else:
            if num < 100: 
                empty  = " " 
        print(empty, num, end = '')
    print()

它出來了

它出來了

我需要它打印為

我需要它打印為

最簡單的方法之一是從 0 而不是 1 開始計數:

for row in range(0, 10):
    for col in range(0, 10):
        num = row * col
        if num < 10:
            empty = "  "
        else:
            if num < 100: 
                empty  = " " 
        if col == 0:
            if row == 0:
                print("    ", end = '')
            else:
                print("  ", row, end='')
        elif row == 0:
            print("  ", col, end='')
        else:
            print(empty, num, end = '')
    print()

這將打印

    1   2   3   4   5   6   7   8   9
1   1   2   3   4   5   6   7   8   9
2   2   4   6   8  10  12  14  16  18
3   3   6   9  12  15  18  21  24  27
4   4   8  12  16  20  24  28  32  36
5   5  10  15  20  25  30  35  40  45
6   6  12  18  24  30  36  42  48  54
7   7  14  21  28  35  42  49  56  63
8   8  16  24  32  40  48  56  64  72
9   9  18  27  36  45  54  63  72  81

話雖如此,這是一個單行版本,其結果是相同的輸出:

print("\n".join(("{:>4}"*10).format(*(i*j if i*j else i+j if i+j else "" for j in range(10))) for i in range(10)))

試試這個:

header = '\t{}'.format('\t'.join(map(str, range(1, 10))))
rows = []
for i in range(1, 10):
   row = '\t'.join(map(str, (i*q for q in range(1, 10))))
   rows.append('{}\t{}'.format(i, row))
print(header+'\n' + '\n'.join(rows))

這會給你:

>>> print(header+'\n'+'\n'.join(rows))
        1       2       3       4       5       6       7       8       9
1       1       2       3       4       5       6       7       8       9
2       2       4       6       8       10      12      14      16      18
3       3       6       9       12      15      18      21      24      27
4       4       8       12      16      20      24      28      32      36
5       5       10      15      20      25      30      35      40      45
6       6       12      18      24      30      36      42      48      54
7       7       14      21      28      35      42      49      56      63
8       8       16      24      32      40      48      56      64      72
9       9       18      27      36      45      54      63      72      81

@Selcuk 做了一些很好的觀察,所以這里有一個帶有嵌套 for 循環和正確對齊的版本:

header = []
for i in range(1, 10):
    header.append('{0:>2}'.format(i))

rows = []
for i in range(1, 10):
   row = []
   for q in range(1, 10):
     result = '{0:>2}\t'.format(i*q)
     row.append(result)
   rows.append(row)

print('\t{0:>2}'.format('\t'.join(header)))
for idx, row in enumerate(rows):
   print('{0:>2}\t{1}'.format(idx+1, ''.join(row)))

這是一個打印自定義長度表格的函數

def multiplication_table(row, col):
    fin = []
    for i in range(1, row+1):
        arr = []
        for j in range(1, col+1):
            arr.append(i * j)
        fin.append(arr)
    return fin

例如:multiplication_table(3, 3)

[[1, 2, 3], 
 [2, 4, 6], 
 [3, 6, 9]]

希望有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM