当前位置:首页>python>Python基础学习手册第5章:通过星星矩阵 + 乘法口诀表 + 百僧分百馒了解for循环嵌套

Python基础学习手册第5章:通过星星矩阵 + 乘法口诀表 + 百僧分百馒了解for循环嵌套

  • 2026-10-10 15:37:06
Python基础学习手册第5章:通过星星矩阵 + 乘法口诀表 + 百僧分百馒了解for循环嵌套
上一期我们学习了单个for循环
今天了解循环的 “进阶用法”——循环嵌套!
就是 “循环里套循环”,嵌套循环也是非常实用和常用的一种代码编译方式
这种方式能更适配解决复杂的数学问题的场景。
今天我们通过星星矩阵、乘法口诀表等案例来帮助大家快速掌握和了解嵌套循环的使用

📚 本期知识点目录

  1. 循环嵌套的核心:外层循环 和 内层循环
  2. 🖥️代码练习 1:打印星星矩阵(矩形 + 三角形)
  3. 🖥️代码练习 2:打印九九乘法口诀表(经典案例)
  4. 🖥️代码练习 3:数学应用题 —— 百僧分百馒
什么是循环嵌套?
在一个循环(外层循环)的代码块中,再写另一个循环(内层循环),就是循环嵌套。
当然,循环嵌套的情况也有很多时候是存在很多个循环的
类似于“套娃”
代码的解读规律:
  • 外层循环执行 1 次,内层循环会完整执行所有次数;
  • 外层循环 相当于地球公转,内层循环 相当于地球自转,
    公转1圈,自转365圈
  • 书写要求:每层循环都要严格缩进,表示包含关系(4 个空格 )
格式如下:
# for循环嵌套for 外层变量 in 外层可迭代对象:    # 外层循环代码    for 内层变量 in 内层可迭代对象:        # 内层循环代码(外层执行1次,内层执行全部次数)    # 外层循环后续代码(内层执行完才会执行)
接下来开始通过代码的运行效果去边看边了解
🖥️代码练习 1:打印如下图的星星矩阵
💡思路:
  • 外层循环:控制行数(3 行);
  • 内层循环:控制每行的星星数量(4 个);
  • print('*', end=' '):不换行打印星星,用空格分隔;
  • print():内层循环结束后换行,开始下一行。
🖥️代码练习 
for i in range(3):  # 外层循环:控制行数(3行)    for x in range(4):  # 内层循环:控制每行的星星数(4个)        print('*', end=' ')  # 不换行,空格分隔    print()  # 内层循环结束,换行(关键!)
这里外层循环进入第1次循环时
内层循环会循环4次,然后输出4个星星
因为end=“ ” 不换行,且引号内可以书写内容,效果是将打印的东西按照引号的内容进行隔开
在这里,我的引号内打了空格,所以每一行的每个星星间是有空隙的
同学们可以试试在引号中加入其它符号之类的试试效果
🖥️代码练习2:打印如下的三角形的星星阵

💡思路:

  • · 外层循环:控制行数(3 行)
  • · 内层循环:星星数在随着行数增加,这里我们内层循环的次数就不是固定的了,而是一个不断递增的状态,是一个不断变化的量
  • 同时,仔细观察  ——星星数和行数是相同的
  • 那么请问行数是哪层的循环控制的呢?且那个变量是可以表示这些行数呢?
🖥️代码练习 
for i in range(3):  # 外层:    for x in range(i+1):  # 内层:        print('*', end=' ')    print()  # 换行
这里为什么是i+1呢?
首先,行数是外层循环控制的,且我们外层循环的变量 i 刚好可以满足表示行数的需求。
因为  i  可以把循环内的数字全部获取到(不过要注意,它只能获取到循环次数的前1次)
所以 i 会逐步获取到 0 1 2 这三个数字,同时内层循环是为了打印星星数量,而星星数量和行数  1  2  3  是一样的
所以 内层循环才会是 i+1 的情况  :
第1次循环 即:0+1  
第2次循环       1+1  
第3次循环       2+1
拓展关于  i   的验证练习代码:
for i in range(10):  # 循环10次    print(i)  # 观察i变量 会得到什么结果
注意: 这里并不是说只有 i 才行,也可以是其它名称
主要取决于是否是在for循环的位置中
例如:
for x in range(10):  # 循环10次 将i 换成 x    print(x)  # 也是一样的效果
🖥️代码练习 3:打印如下图的九九乘法口诀表

💡思路:

  • 外层循环:控制行数(1-9 行),对应乘法口诀的 “第二个数”;
  • 内层循环:控制每行的列数(1 到当前行数),对应乘法口诀的 “第一个数”;
  • 用end=' '保持同一行,内层循环结束后换行
分清楚哪些是固定不变,哪些是实时改变的,方便我们进行字符串拼接
或者用format函数

🖥️代码练习 

for x in range(1, 10):  # 控制行数    # 控制列数(列数随着行数的增加,也在增加)        for y in range(1, x+1):            # print(x,'x',y,'=',x*y,end='  ') 字符串拼接            # 用format函数连接格式也可以                print('{}x{}={}'.format(y, x, y*x,), end=' ')        print()  # 换行
你看懂了吗?通过前面的各个练习,再仔细的根据循环情况,不断往下推
相信还是很容易能理解的💡
🖥️代码练习 4:数学应用题 —— 百僧分百馒
📚题目如下:
💡思路:
  • 设大和尚数量为big,小和尚数量为small
  • 它们需要满足两个条件
  • 条件 1:big + small = 100  → 总人数
  • 条件 2:3*big + small/3 = 100 → 总馒头数
  • for 循环遍历可能的数值,满足条件输出即可

🖥️代码练习 

for big in range(1, 101):  # 遍历大和尚数量    small = 100 - big  # 小和尚数量=总人数-大和尚    if 3 * big + small / 3 == 100:  # 满足馒头总数条件        print(f'大和尚:{big}人,小和尚:{small}人')        break  # 找到答案后终止循环
运行结果:
大和尚:25 人,小和尚:75 人
这道题目还可以增加来个进阶的版本,也是非常经典的题目
百僧分百馒 进阶版
📚题目如下:

💡思路:

  • 可以设老和尚old、大和尚big、小和尚small
    同样是满足下面的条件就可以了
  • 只是多加了一个变量,主体的思维还是不变的
  • 条件 1:old + big + small = 100 → 总人数
  • 条件 2:3*old + 2*big + small/2 = 100 → 总馒头数
  • 只不过这次
  • 我们需要用双层循环遍历(注意❌️:答案不唯一)

🖥️代码练习 

for small in range(1, 101): # 循环 小僧人人数 1--101        for big in range(1, 101-small): # 循环 大僧人人数 101-小僧人人数                old = 100-small-big  # 将剩余的老僧人人数赋值给old               if 2*big+small/2+old*3==100: # 符合验算条件                         print(small, big, old) # 输出人数组合
OK,那么今天的循环嵌套到这里就学习结束了✌️
你们学会了吗❓️
要好好练习,多写才能熟能生巧
文章底部有课后练习题 ↓
如果觉得有用的话,点个赞👍,转发给身边的朋友👬,你们的认可是我的动力,只有更多的兴趣相同的人看见,才会碰撞出不同的思维火花🔥
有任何问题欢迎评论留言
🖥️练习1:用循环嵌套打印倒三角星星阵
🖥️练习2:百文买百鸡
公鸡5文1只
母鸡3文1只
小鸡1文3只
100文钱买100只鸡,有多少种不同的买法?
往期文章点这里⬇️:
Python基础学习手册第4章:掌握for循环基础结构以及常用搭配range + break/continue的函数运用
Python学习手册第三章:常用运算符+条件判断
Python学习手册第二章:变量和基础数据类型
Python学习手册第一章:程序背诗和运算
用Python制作童年的经典游戏

最新文章

随机文章