以下是用 Python 打印九九乘法表的 12 种不同方式,涵盖多种编程风格和技巧,包括嵌套循环、列表推导式、格式化输出等
以下是用 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 注重输出对齐,适合需要整齐格式的场景。
你可以选择任一方式运行,也可根据需要调整格式(如对齐方式、间隔符等)。如果需要进一步解释某一种方式或优化代码,请告诉我!
更多推荐


所有评论(0)