Python九九乘法表怎么写?for循环嵌套入门示例

Mason
Mason
发布时间:2026-11-04 | 3人浏览过
原创

深入解析如何在Python中编写九九乘法表。通过简洁的双重for循环嵌套示例,详细拆解外层行循环、内层列边界计算、print参数控制及排版对齐技巧,帮助初学者真正掌握多维遍历的核心思维。

分类:Python基础教程 主题:循环控制 / 嵌套结构 难度:入门

编写 Python 九九乘法表的核心只需 4 行代码:外层 for 循环负责生成 1 到 9 的行号,内层 for 循环负责生成当前行所包含的列算式,通过 print(..., end=' ') 保持同行制表对齐,并在每行结束后调用一次无参数的 print() 实现换行。掌握这个示例的关键,在于理解两层循环如何协同控制二维坐标。

Python九九乘法表怎么写?for循环嵌套入门示例
图 0:Python 双重 for 循环与九九乘法表结构导览

一、4 行核心代码与运行效果

在 Python 中,输出标准的下三角九九乘法表,最简练且符合编码习惯的实现如下:

# 标准九九乘法表实现
for i in range(1, 10):
    for j in range(1, i + 1):
        print(f"{j}*{i}={i*j}", end='	')
    print()

将上述代码保存并在终端执行后,将得到如下规则排布的控制台输出:

【示例输出】 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

观察输出结果可以发现两个直观特征:第一,每一行算式的第二个乘数(乘数 i)都相同,且等于当前的行号;第二,每一行算式的第一乘数(被乘数 j)都从 1 递增到当前行号。这两个特征恰好对应了内外两层循环的运行职责。

二、为什么需要两层 for 循环?

单层 for 循环只能生成一维的线性序列(例如一行文本或一个列表)。九九乘法表本质上是一个具有“行”和“列”两个维度的二维表格,因此必须借助两层嵌套循环来分别驱动:

  • 外层循环变量 i:控制纵向行数。使用 range(1, 10) 生成数字 1 至 9。每循环一次,代表进入新的一行。
  • 内层循环变量 j:控制横向列数。使用 range(1, i + 1)。由于第 1 行只有 1 项、第 2 行有 2 项……第 i 行需要有 i 项,所以内层的结束边界直接绑定了外层当前的行号 i。
Python九九乘法表怎么写?for循环嵌套入门示例
图 1:双重 for 循环与二维阶梯网格映射模型

如上图所示,如果内层循环固定写成 range(1, 10),程序将打印出一个 9×9 的满矩形阵列(共 81 个算式),其中包含 2*1=2 和 1*2=2 这种对称重复项。而把内层上界设为 i + 1 时,所有 j > i 的区域都会被自动截断,从而构成了中式传统算术中的“阶梯下三角”。

三、循环嵌套单步推导过程

初学者在理解嵌套循环时,最容易感到困惑的是“内层变量和外层变量到底按什么时序推进”。我们可以把双重循环比作钟表:外层循环如同“时针”,走一格需要一段周期;内层循环如同“分针”,时针每挪动一格,分针都必须在内圈完整走完一整轮。

Python九九乘法表怎么写?for循环嵌套入门示例
图 2:嵌套循环单步推导与时钟运转生命周期

我们可以按循环运行的真实时序逐步追踪:

  1. 第一轮迭代(i = 1): 内层 range(1, 2) 仅包含数值 1。内层执行 j = 1,打印出 1*1=1 及制表符 。内层遍历完毕退出,程序执行后续与内层平级的 print(),控制台光标移动到下一行首位。
  2. 第二轮迭代(i = 2): 外层递增为 2。内层 range(1, 3) 包含数值 [1, 2]。内层先执行 j = 1,打印 1*2=2 ;紧接着在同一行继续执行 j = 2,打印 2*2=4 。内层所有数值处理完毕后退出,再次触发 print() 换行。
  3. 第三轮迭代(i = 3): 外层推进到 3。内层 range(1, 4) 依次遍历 1, 2, 3,在同一行连续输出 3 个算式后换行。
  4. 持续推进直至第九轮(i = 9): 外层取到最后一个值 9。内层 range(1, 10) 遍历 1 到 9,横向输出 9 个乘法式。内层结束后换行,外层也无后续元素,两层循环全部安全终止。

全过程外层一共循环了 9 次,而内层总计执行了 1 + 2 + 3 + ... + 9 = 45 次输出,正好对应乘法表中的 45 个算式。

四、为什么排版不会错乱?print 的两个关键控制

在默认情况下,Python 的 print() 函数每次输出完毕后都会自动附加一个换行符 。如果直接写 print(f"{j}*{i}={i*j}"),控制台会把 45 个算式打印成 45 行单列,完全无法形成矩阵。

Python九九乘法表怎么写?for循环嵌套入门示例
图 3:print() 函数的两大排版控制机制对比

1. end=' ' 消除换行并追加制表符

end 是 print() 的内置关键字参数,用于定义输出末尾附加的字符。通过显式设置 end=' ',我们达成了两件事:

  • 去除了默认的换行符 ,使得下一次 print() 的内容紧接着显示在当前行右侧;
  • 注入了制表符 (Tab),在相邻表达式之间保留统一的间隔槽位,让上下两行的列内容能够大致对齐。

2. 空 print() 的缩进位置决定换行时机

代码第 5 行的 print() 不包含任何参数,它的唯一作用是向终端输出一个默认换行符。它的缩进层级至关重要:必须与内层 for 保持对齐。

  • 如果把它缩进到了内层循环内部,会导致每个算式打印完都立刻换行,end=' ' 的同行拼接效果将完全失效;
  • 如果把它推到了最外层(与外层 for 对齐),则只有当 9 行 45 个算式全部执行完毕后才会换一次行,所有内容都会挤在同一行。

五、格式对齐进阶:让输出更规整

在基础写法中,我们使用的是 end=' '。由于乘积有的是一位数(如 2*3=6),有的是两位数(如 3*4=12),在某些终端或自定义字体下,制表符对齐可能会显得稍有松散。

如果希望实现像素级的规整排版,可以利用 Python f-string 的格式化对齐语法,为结果部分预留固定位宽:

# 进阶对齐:使用 f-string 格式化为乘积预留 2 位宽度
for i in range(1, 10):
    for j in range(1, i + 1):
        # {i*j:<2} 表示乘积靠左对齐,并占用至少 2 个字符宽度
        print(f"{j}*{i}={i*j:<2}", end='  ')
    print()
【进阶格式化输出示例】 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

通过 {i*j:<2} 将一位数自动补齐右侧空格,再配合固定的双空格 end=' ',整体视觉效果甚至比制表符更加紧凑统一。

六、初学者高频踩坑点与排查清单

很多初学者在第一次独立手写九九乘法表时,常会出现运行报错或显示不如预期的情况。以下是三个最常见的逻辑疏漏:

坑点 1:range 区间的左闭右开特性

Python 的 range(start, stop) 生成的数值是包含 start 但不包含 stop 的半开区间 [start, stop)。

如果把外层写成 range(1, 9),行数最多只能到 8,遗漏了第 9 行;如果把内层写成 range(1, i),当 i = 1 时 range(1, 1) 为空,导致第 1 行直接不输出,且每行都会丢失对角线算式(如 2*2、3*3)。因此务必写为 range(1, 10) 与 range(1, i + 1)。

坑点 2:乘数书写顺序颠倒

数学上九九表的读法习惯是“小在前、大在后”或“列在前、行在后”(如 1*2=2、2*2=4)。如果写成 f"{i}*{j}={i*j}",第二行会变成 2*1=2 2*2=4,虽然计算数值无误,但与通用的乘法表板式相反。请记住:内层列变量 j 在前,外层行变量 i 在后。

坑点 3:变量名作用域覆盖

部分初学者在外层和内层循环中不小心使用了相同的变量名(例如内外层都用 for i in ...),这会导致内层赋值覆盖外层的循环状态,使程序出现难以预料的跳出或死循环。内外层必须使用互不干扰的独立标识符(如 i 与 j,或 row 与 col)。

七、总结:双重循环的通用思维模型

九九乘法表不仅是一个经典的语言练习题,更是学习所有二维数据结构遍历(如矩阵运算、图表生成、网格渲染)的基石模型。

Python九九乘法表怎么写?for循环嵌套入门示例
图 4:双重 for 循环解题四步法则与思维模型总结

只要遇到需要输出或处理类似“二维阶梯”或“矩阵结构”的问题,都可以提炼为四步黄金法则:

步骤 法则名称 九九乘法表对应操作 拓展通用意义
第 1 步 定行维度 for i in range(1, 10): 确定总轮次,提供当前行的基准索引
第 2 步 定列边界 for j in range(1, i + 1): 根据当前行动态决定处理多少个单元项
第 3 步 行内拼接 print(..., end=' ') 压制折行,通过分隔符将多个数据元素排在同一行
第 4 步 行末折行 print()(平级内层 for) 一行任务圆满完成,换行进入下一轮状态

掌握了这套思维模型,未来在面对倒三角乘法表、杨辉三角、字符金字塔或是图像二维像素点阵的遍历时,只需针对性调整行与列的 range 区间和格式化模板,即可直接迁移套用。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表