以下是用 Python 打印九九乘法表的 12 种不同方式,涵盖多种编程风格和技巧,包括嵌套循环、列表推导式、格式化输出等。每种方式都尽量简洁,并附有简短说明。九九乘法表是指 1×1 到 9×9 的乘法表。

方式 1:基础嵌套循环(逐行打印)

使用简单的嵌套 for 循环,逐行打印乘法表。

for i in range(1, 10):
    for j in range(1, i + 1):
        print(f"{j}×{i}={i*j}", end="\t")
    print()

说明:外层循环控制行(i),内层循环控制列(j),j 最大到 i,避免重复。使用 end="\t" 实现每行横向输出。


方式 2:格式化对齐输出

改进格式化,使输出更整齐对齐。

for i in range(1, 10):
    for j in range(1, i + 1):
        print(f"{j:>2}×{i:>2}={i*j:>2}", end="  ")
    print()

说明:使用 >2 确保数字右对齐,占两位宽度,输出更美观。


方式 3:列表推导式生成单行

使用列表推导式生成每行的表达式,再打印。

for i in range(1, 10):
    print("  ".join(f"{j}×{i}={i*j}" for j in range(1, i + 1)))

说明:列表推导式生成每行的表达式列表,用 join 拼接为一行,减少显式循环。


方式 4:完整 9×9 表格(填充空格)

打印完整的 9×9 表格,空位填充空格。

for i in range(1, 10):
    for j in range(1, 10):
        if j <= i:
            print(f"{j}×{i}={i*j:>2}", end="\t")
        else:
            print(" " * 8, end="\t")
    print()

说明:完整遍历 9×9,当 j > i 时输出空格,保持矩形结构。


方式 5:倒序打印

从 9×9 到 1×1 倒序打印乘法表。

for i in range(9, 0, -1):
    for j in range(i, 0, -1):
        print(f"{j}×{i}={i*j}", end="\t")
    print()

说明:外层循环从 9 递减到 1,内层循环从 i 递减到 1,生成倒序表格。


方式 6:递归方式

使用递归函数生成乘法表。

def print_mult(i=1, j=1):
    if i > 9:
        return
    if j <= i:
        print(f"{j}×{i}={i*j}", end="\t")
        print_mult(i, j + 1)
    else:
        print()
        print_mult(i + 1, 1)

print_mult()

说明:递归函数处理每个乘法表达式,j > i 时换行,i > 9 时终止。


方式 7:使用 while 循环

用 while 循环替代 for 循环。

i = 1
while i <= 9:
    j = 1
    while j <= i:
        print(f"{j}×{i}={i*j}", end="\t")
        j += 1
    print()
    i += 1

说明:与方式 1 类似,但使用 while 循环,逻辑更显式。


方式 8:矩阵形式存储后打印

先将乘法表存入列表,再打印。

table = [[f"{j}×{i}={i*j}" for j in range(1, i + 1)] for i in range(1, 10)]
for row in table:
    print("\t".join(row))

说明:用列表推导式生成整个表格,存储为二维列表后逐行打印。


方式 9:字符串拼接

手动拼接每行字符串后打印。

for i in range(1, 10):
    line = ""
    for j in range(1, i + 1):
        line += f"{j}×{i}={i*j}\t"
    print(line)

说明:每次循环拼接一行字符串,最后打印,逻辑简单。


方式 10:使用 lambda 函数

利用 lambda 函数生成表达式。

for i in range(1, 10):
    print("  ".join((lambda x, y: f"{x}×{y}={x*y}")(j, i) for j in range(1, i + 1)))

说明:lambda 函数生成每个乘法表达式,结合列表推导式和 join 输出。


方式 11:字典存储

用字典存储乘法表后打印。

table = {(i, j): f"{j}×{i}={i*j}" for i in range(1, 10) for j in range(1, i + 1)}
for i in range(1, 10):
    for j in range(1, i + 1):
        print(table[(i, j)], end="\t")
    print()

说明:用字典以 (i, j) 作为键存储表达式,再按顺序访问打印。


方式 12:函数式编程(map 和 lambda)

使用 map 和 lambda 实现函数式风格。

for i in range(1, 10):
    print("  ".join(map(lambda j: f"{j}×{i}={i*j}", range(1, i + 1))))

说明:map 函数将 range(1, i+1) 映射为表达式列表,join 拼接输出。


输出示例(以方式 1 为例)

运行方式 1 的代码,输出如下:

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

总结

  • 简单易读:方式 1、2、7 适合初学者,逻辑清晰。
  • 紧凑高效:方式 3、8、10、12 使用列表推导式或 map,代码更简洁。
  • 独特风格:方式 4(完整表格)、5(倒序)、6(递归)、11(字典)提供不同视角。
  • 格式美观:方式 2、4 注重输出对齐,适合需要整齐格式的场景。

你可以选择任一方式运行,也可根据需要调整格式(如对齐方式、间隔符等)。如果需要进一步解释某一种方式或优化代码,请告诉我!

更多推荐