就是 “循环里套循环”,嵌套循环也是非常实用和常用的一种代码编译方式今天我们通过星星矩阵、乘法口诀表等案例来帮助大家快速掌握和了解嵌套循环的使用📚 本期知识点目录
- 🖥️代码练习 1:打印星星矩阵(矩形 + 三角形)
在一个循环(外层循环)的代码块中,再写另一个循环(内层循环),就是循环嵌套。当然,循环嵌套的情况也有很多时候是存在很多个循环的- 外层循环执行 1 次,内层循环会完整执行所有次数;
- 外层循环 相当于地球公转,内层循环 相当于地球自转,
- 书写要求:每层循环都要严格缩进,表示包含关系(4 个空格 )
# for循环嵌套for 外层变量 in 外层可迭代对象: # 外层循环代码 for 内层变量 in 内层可迭代对象: # 内层循环代码(外层执行1次,内层执行全部次数) # 外层循环后续代码(内层执行完才会执行)
接下来开始通过代码的运行效果去边看边了解print('*', end=' '):不换行打印星星,用空格分隔;print():内层循环结束后换行,开始下一行。
for i in range(3): # 外层循环:控制行数(3行) for x in range(4): # 内层循环:控制每行的星星数(4个) print('*', end=' ') # 不换行,空格分隔 print() # 内层循环结束,换行(关键!)
因为end=“ ” 不换行,且引号内可以书写内容,效果是将打印的东西按照引号的内容进行隔开在这里,我的引号内打了空格,所以每一行的每个星星间是有空隙的- · 内层循环:星星数在随着行数增加,这里我们内层循环的次数就不是固定的了,而是一个不断递增的状态,是一个不断变化的量
- 那么请问行数是哪层的循环控制的呢?且那个变量是可以表示这些行数呢?
for i in range(3): # 外层: for x in range(i+1): # 内层: print('*', end=' ') print() # 换行
首先,行数是外层循环控制的,且我们外层循环的变量 i 刚好可以满足表示行数的需求。因为 i 可以把循环内的数字全部获取到(不过要注意,它只能获取到循环次数的前1次)所以 i 会逐步获取到 0 1 2 这三个数字,同时内层循环是为了打印星星数量,而星星数量和行数 1 2 3 是一样的for i in range(10): # 循环10次 print(i) # 观察i变量 会得到什么结果
注意: 这里并不是说只有 i 才行,也可以是其它名称for x in range(10): # 循环10次 将i 换成 x print(x) # 也是一样的效果
- 外层循环:控制行数(1-9 行),对应乘法口诀的 “第二个数”;
- 内层循环:控制每行的列数(1 到当前行数),对应乘法口诀的 “第一个数”;
分清楚哪些是固定不变,哪些是实时改变的,方便我们进行字符串拼接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:数学应用题 —— 百僧分百馒📚题目如下:- 条件 1:
big + small = 100 → 总人数 - 条件 2:
3*big + small/3 = 100 → 总馒头数
for big in range(1, 101): # 遍历大和尚数量 small = 100 - big # 小和尚数量=总人数-大和尚 if 3 * big + small / 3 == 100: # 满足馒头总数条件 print(f'大和尚:{big}人,小和尚:{small}人') break # 找到答案后终止循环
这道题目还可以增加来个进阶的版本,也是非常经典的题目💡思路:
- 可以设老和尚
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) # 输出人数组合
如果觉得有用的话,点个赞👍,转发给身边的朋友👬,你们的认可是我的动力,只有更多的兴趣相同的人看见,才会碰撞出不同的思维火花🔥有任何问题欢迎评论留言