11= 1
    2
    1= 2 22= 4
    3
    1= 3 32= 6 33= 9
    41= 4 42= 8 43=12 44=16
    51= 5 52=10 53=15 54=20 55=25
    6
    1= 6 62=12 63=18 64=24 65=30 66=36
    7
    1= 7 72=14 73=21 74=28 75=35 76=42 77=49
    81= 8 82=16 83=24 84=32 85=40 86=48 87=56 88=64
    91= 9 92=18 93=27 94=36 95=45 96=54 97=63 98=72 9*9=81

    我们可以用以下语句输出乘法表的一行:

    1. for i in range(1, 10):
    2. print('{}*{}={}'.format(1, i, 1 * i), end=' ')
    3. print() # 换行

    11= 1 12= 2 13= 3 14= 4 15= 5 16= 6 17= 7 18= 8 1*9= 9

    想输出9行,可以在外层再加一个循环:

    1. for j in range(1,10):
    2. for i in range(1,10):
    3. print('{}*{}={}'.format(i,j,i * j),end = ' ')
    4. print() # 换行

    991.png

    因计算结果存在1位数和2位数的区别,导致格式不规整。前面我们学过可以为str.format()加参数控制输出占位宽度和对齐方式,这里可以用’{}*{}={:>2}’来控制输出的宽度为2,对齐方式为右对齐。

    1. for j in range(1,10):
    2. for i in range(1,10):
    3. print('{}*{}={:>2}'.format(i,j,i * j),end = ' ')
    4. print() # 输出一行后换行

    992.png

    通常情况下,只输出下三角的部分,可以通过控制内层循环次数来实现,使内层循环最大次数与外层的 j 值相同即可实现:

    1. for j in range(1, 10):
    2. for i in range(1, j + 1):
    3. print('{}x{}={:>2}'.format(i, j, i * j), end=' ')
    4. print()

    993.png

    增加分隔,限定乘积占位2字符宽度右对齐:

    1. def multi_tables():
    2. for j in range(1, 10):
    3. for i in range(1, j + 1):
    4. print('| {}*{}={:>2}'.format(i, j, i * j), end=' ')
    5. print('|')
    6. if __name__ == '__main__':
    7. multi_tables()

    image.png

    1. i,j = 1,0 # 双指针,初始化i,j
    2. while i <= 9: # i < 9时进入循环
    3. j = j + 1 # j 从1开始输出
    4. print(f"{j}×{i}={i*j:>2}",end = " ") # 循环打印乘法表的项,不换行
    5. if i == j: # 当 i 与 j相等时
    6. print() # 输出换行
    7. j = 0 # 重新初始化j
    8. i = i + 1 # 改变i值,使循环趋于结束

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