11= 1
21= 2 22= 4
31= 3 32= 6 33= 9
41= 4 42= 8 43=12 44=16
51= 5 52=10 53=15 54=20 55=25
61= 6 62=12 63=18 64=24 65=30 66=36
71= 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
我们可以用以下语句输出乘法表的一行:
for i in range(1, 10):
print('{}*{}={}'.format(1, i, 1 * i), end=' ')
print() # 换行
11= 1 12= 2 13= 3 14= 4 15= 5 16= 6 17= 7 18= 8 1*9= 9
想输出9行,可以在外层再加一个循环:
for j in range(1,10):
for i in range(1,10):
print('{}*{}={}'.format(i,j,i * j),end = ' ')
print() # 换行
因计算结果存在1位数和2位数的区别,导致格式不规整。前面我们学过可以为str.format()加参数控制输出占位宽度和对齐方式,这里可以用’{}*{}={:>2}’来控制输出的宽度为2,对齐方式为右对齐。
for j in range(1,10):
for i in range(1,10):
print('{}*{}={:>2}'.format(i,j,i * j),end = ' ')
print() # 输出一行后换行
通常情况下,只输出下三角的部分,可以通过控制内层循环次数来实现,使内层循环最大次数与外层的 j 值相同即可实现:
for j in range(1, 10):
for i in range(1, j + 1):
print('{}x{}={:>2}'.format(i, j, i * j), end=' ')
print()
增加分隔,限定乘积占位2字符宽度右对齐:
def multi_tables():
for j in range(1, 10):
for i in range(1, j + 1):
print('| {}*{}={:>2}'.format(i, j, i * j), end=' ')
print('|')
if __name__ == '__main__':
multi_tables()
i,j = 1,0 # 双指针,初始化i,j
while i <= 9: # i < 9时进入循环
j = j + 1 # j 从1开始输出
print(f"{j}×{i}={i*j:>2}",end = " ") # 循环打印乘法表的项,不换行
if i == j: # 当 i 与 j相等时
print() # 输出换行
j = 0 # 重新初始化j
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