Python(for和while)循环嵌套及用法

news/2024/11/29 14:55:12/

Python 不仅支持 if 语句相互嵌套,while 和 for 循环结构也支持嵌套。所谓嵌套(Nest),就是一条语句里面还有另一条语句,例如 for 里面还有 for,while 里面还有 while,甚至 while 中有 for 或者 for 中有 while 也都是允许的。

当 2 个(甚至多个)循环结构相互嵌套时,位于外层的循环结构常简称为外层循环或外循环,位于内层的循环结构常简称为内层循环或内循环。

循环嵌套结构的代码,Python 解释器执行的流程为:

  1. 当外层循环条件为 True 时,则执行外层循环结构中的循环体;

  1. 外层循环体中包含了普通程序和内循环,当内层循环的循环条件为 True 时会执行此循环中的循环体,直到内层循环条件为 False,跳出内循环;

  1. 如果此时外层循环的条件仍为 True,则返回第 2 步,继续执行外层循环体,直到外层循环的循环条件为 False;

  1. 当内层循环的循环条件为 False,且外层循环的循环条件也为 False,则整个嵌套循环才算执行完毕。

循环嵌套的执行流程图如图 1 所示:

图 1 循环嵌套的执行流程图

下面程序演示了 while-for 嵌套结构:

i =0
while i<10:
for j inrange(10):
print("i=",i," j=",j)i=i+1
由于程序输出结果篇幅太长,读者可自行拷贝代码并执行,观察其执行结果。

可以看到,此程序中运用了嵌套循环结构,其中外循环使用的是 while 语句,而内循环使用的是 for 语句。程序执行的流程是:

  • 一开始 i=0,循环条件 i<10 成立,进入 while 外循环执行其外层循环体;

  • 从 j=0 开始,由于 j <10 成立,因此进入 for 内循环执行内层循环体,直到 j=10 不满足循环条件,跳出 for 循环体,继续执行 while 外循环的循环体;

  • 执行 i=i+1 语句,如果 i<10 依旧成立,则从第 2 步继续执行。直到 i<10 不成立,则此循环嵌套结构才执行完毕。

根据上面的分析,此程序中外层循环将循环 10 次(从 i=0 到 i=9),而每次执行外层循环时,内层循环都从 j=0 循环执行到 j=9。因此,该嵌套循环结构将执行 10*10 = 100 次。

嵌套循环执行的总次数 = 外循环执行次数 * 内循环执行次数

事实上,if 语句和循环(while、for)结构之间,也可以相互嵌套,举个例子

i =0
if i<10:
for j inrange(5):
print("i=",i," j=",j)

程序执行结果为:

i= 0 j= 0
i= 0 j= 1
i= 0 j= 2
i= 0 j= 3
i= 0 j= 4

需要指明的是,上面程序演示的仅是 2 层嵌套结构,其实 if、while、for 之间完全支持多层( ≥3 )嵌套。例如:

if ...:
while ...:
for ...:
if ...:
...

也就是说,只要场景需要,判断结构和循环结构之间完全可以相互嵌套,甚至可以多层嵌套。


http://www.ppmy.cn/news/19247.html

相关文章

Nginx与LUA(7)

您好&#xff0c;我是湘王&#xff0c;这是我的CSDN博客。值此新春佳节&#xff0c;我给您拜年啦&#xff5e;祝您在新的一年中所求皆所愿&#xff0c;所行皆坦途&#xff0c;展宏“兔”&#xff0c;有钱“兔”&#xff0c;多喜乐&#xff0c;常安宁&#xff01;软件开发中&…

React错误边界

首先 我们先构建出问题的场景 我们创建一个react项目 然后在src下创建 components 文件夹目录 在下面创建一个 error.jsx 组件 参开代码如下 import React from "react";export default class App extends React.Component{constructor(props){super(props);this.…

【每日一题Day97】LC1828统计一个圆中点的数目 | 模拟

统计一个圆中点的数目【LC1828】 给你一个数组 points &#xff0c;其中 points[i] [xi, yi] &#xff0c;表示第 i 个点在二维平面上的坐标。多个点可能会有 相同 的坐标。 同时给你一个数组 queries &#xff0c;其中 queries[j] [xj, yj, rj] &#xff0c;表示一个圆心在 …

单绞机控制算法模型(Simulink仿真)

线缆行业单绞机PLC控制算法详细解读可以参看下面的文章链接: 线缆行业单绞机控制算法(详细图解+代码)_RXXW_Dor的博客-CSDN博客在了解单绞机之前需要大家对收放卷以及排线控制有一定的了解,不清楚的可以参看下面几篇博客,这里不再赘述,受水平和能力所限,文中难免出现错…

议论文书写总结

观点如何引入以及背后原理议论文的书写有一个常用的书写模板&#xff0c;也就是五分三式。有人说这种模板的得分不高&#xff0c;也有人只要核心内容切实、不空范&#xff0c;论证严谨就也是可以的。那么议论文该如何才能写好。以下仅为随笔&#xff0c;进行思考的记录。议论文…

树状数组(代码模板和原理详解)

树状数组代码模板 普通数组&#xff1a;求前缀和&#xff1a; O(n)O(n)O(n)&#xff0c;修改&#xff1a;O(1)O(1)O(1) 前缀和数组&#xff1a;求前缀和&#xff1a;O(1)O(1)O(1)&#xff0c;修改&#xff1a;O(n)O(n)O(n) 鱼和熊掌不可兼得&#xff0c;当我们同时需要对一个…

插入排序算法的实现和优化~

插入排序的基本思想&#xff1a; 在一个已排好序的记录子集的基础上&#xff0c;每一步将下一个待排序的记录有序插入到已排好序的记录子集中&#xff0c;直到将所有待排记录全部插入为止 直接插入排序&#xff1a; 直接插入排序是一种最基本的插入排序方法&#xff0c;元素…

高等数学【合集2】

文章目录积分计算积分计算 求导↔积分求导 \leftrightarrow 积分求导↔积分 求导积分(1x)′−1x2\large(\frac{1}{x})-\frac{1}{x^2}(x1​)′−x21​∫1x2dx−1x2c\large\int \frac{1}{x^2}dx-\frac{1}{x^2}c∫x21​dx−x21​c(lnx)′1x\large(lnx)\frac{1}{x}(lnx)′x1​∫1x…