Python 循环语句
Python 循环语句
在前面的学习中,我们写的代码大多是一行接一行地顺序执行,就像我们一步一步地走路一样,做完一件事再做下一件
但是,如果我们需要做很多重复的事情,比如打印 100 遍 “Hello World”,或者计算 1 到 100 的总和,难道我们要把相同的代码写 100 遍吗?那会非常的麻烦!
但是,别担心,编程之所以强大,就是因为它能让计算机帮我们做重复的工作。循环语句就是实现这种重复的魔法
什么是循环?
简单说,循环就是让一部分代码按照我们设定的条件,重复执行多次的结构。
你可以这么设想:
- 你想打印 5 遍 “我爱 Python!”。如果没有循环,你可能需要写 5 行
print("我爱 Python!")。有了循环,几句话就能搞定 - 游戏里角色的移动、敌人的刷新,背后都离不开循环的控制。
循环是如何工作的?
我们可以把循环看成一个检查点和一个执行区:
- 来到检查点:看看现在是不是该执行执行区里的代码。
- 如果条件允许,比如:我还没打印够 5 遍,就进入执行区执行代码。
- 执行完一次后,再次回到检查点。
- 如果条件不允许了,比如:我已经打印够 5 遍了,就离开循环,继续执行循环后面的代码
下面是一个简单的程序框图,展示了循环的一般工作流程:
Python 中的循环类型
Python 主要提供了两种类型的循环语句,让我们能应对不同的重复场景:
1. while 循环
- 特点:只要给定的条件为真(True),就会一直重复执行循环体里的代码。
- 就像:“只要天还没黑,我就继续玩。” 这里“天还没黑”就是条件,“继续玩”就是循环体。
2. for 循环
- 特点:通常用于遍历序列中的每个元素,就比如列表和字符串,或者执行固定次数的循环。
- 就像:“我有一个水果篮子,里面有苹果、香蕉、橘子,我要把它们一个一个拿出来吃掉。” 这里“水果篮子”就是一个序列,“一个一个拿出来吃掉”就是循环体。
3. 嵌套循环
- 特点:在一个循环的内部,再放一个循环。这就像俄罗斯套娃一样。
- 用途:处理更复杂的重复任务,比如打印一个矩阵
循环控制语句
有时候,我们不希望循环严格按照条件判断 -> 执行的固定流程走。比如,我们可能想提前结束整个循环,或者跳过当前这次循环剩下的部分,直接开始下一次
Python 提供了几种循环控制语句来帮助我们更灵活地控制循环:
1. break 语句
- 作用:立即终止当前的整个循环,并且跳出循环体,不再执行后续的循环迭代。
- 就像:你在看书,突然电话响了,你不得不立刻停止看书,不管看到第几页,去接电话。
2. continue 语句
- 作用:立即终止当前这一次的循环迭代,跳过循环体中
continue后面剩余的语句,直接进入下一次循环的条件判断。 - 就像:你在吃一串葡萄,吃到一颗特别酸的,你会把这颗吐掉,然后继续吃下一颗,而不是把整串葡萄都扔了。
3. pass 语句
- 作用:**
pass是一个空语句,它什么也不做**。主要是为了在语法上需要一条语句,但我们暂时不想写具体代码的时候使用,用来保持程序结构的完整性。 - 就像:你在日程本上写下“明天要学习循环”,但具体怎么学还没想好,先记下来占个位置。
好了,到这里,相信你已经对 Python 循环有了一个基本的概念性了解。接下来的内容,我会详细学习每一种循环和控制语句的具体用法
Python While 循环语句
while 循环是 Python 中最简单也是最常用的循环类型之一。它的核心思想非常朴素:
只要一个给定的条件成立(为真),就不断重复执行一段代码(循环体)。一旦条件不成立(为假),就停止循环,继续执行循环后面的代码。
1.1 while 循环的基本结构
1 | while 条件表达式: |
- **
while**:这是 Python 的关键字,告诉 Python 接下来是一个while循环。 - 条件表达式:一个会被计算为
True或False的表达式。就像一个守门人,决定循环是否继续。 - **冒号
:**:表示条件表达式的结束,以及循环体的开始。 - 循环体语句:这部分是当条件为
True时,会被重复执行的代码。循环体必须缩进(通常是 4 个空格),这是 Python 区分代码块的方式。
1.2 while 循环是如何工作的?
执行步骤:
- 首先,检查
while后面的“条件表达式”。 - 如果条件为
True:- 执行缩进的“循环体语句”。
- 执行完一遍循环体后,再次回到步骤 1 检查条件。
- 如果条件为
False:- 跳过“循环体语句”,退出
while循环。 - 继续执行
while循环结构之后的代码。
- 跳过“循环体语句”,退出
1.3 第一个 while 循环实例
让我们看一个简单的例子,用 while 循环打印从 0 到 8 的数字:
1 | count = 0 # 初始化一个计数器 |
运行结果:
1 | The count is: 0 |
代码解析:
count = 0:我们先创建了一个变量count并初始化为 0,用作计数器。while count < 9::条件是count小于 9。一开始count是 0,条件为True。print("The count is:", count):打印当前的count值。count = count + 1:这是非常关键的一步!它让count的值每次增加 1。如果没有这一步,count永远是 0,条件count < 9永远为True,循环就会永远执行下去,即无限循环- 当
count增加到 9 时,count < 9变为False,循环停止。 - 最后打印
"Good bye!"。
2. 循环控制:break 和 continue
有时候,我们希望在循环体内部根据某些条件来改变循环的正常流程。Python 提供了两个重要的关键字来实现这一点:break 和 continue。
2.1 break 语句:立即终止循环,跳出!
break 语句的作用是:立即终止当前循环,并且跳出整个循环体,不再执行循环体中 break 后面的语句,也不再回到条件判断,直接执行循环后面的代码。
设想一个场景,你在看书,突然火警响了,你会立刻停止看书,跑出房间
实例:找到第一个偶数就停止
1 | i = 1 |
运行结果:
1 | 找到第一个偶数: 2 |
实例:从 1 数到 10,然后停止
1 | i = 1 |
运行结果:
1 | 1 |
这里 while True: 会创建一个无限循环,但我们用 break 语句在适当的时候终止了它。
2.2 continue 语句:跳过本次循环剩余部分,直接开始下一次循环
continue 语句的作用是:立即终止当前这一轮的循环,跳过循环体中 continue 后面剩余的语句,直接回到循环的条件判断处,准备开始下一次循环(如果条件仍然成立)。
这就像你在吃葡萄,吃到一颗坏的,你会把这颗坏的吐掉,跳过它,continue,然后接着吃下一颗
**实例
1 | i = 0 |
运行结果:
1 | 1 |
解释:当 i 是偶数时,continue 语句让程序跳过了 print(i),直接回到 while 条件判断。
3. 无限循环:停不下来的循环
如果 while 循环的条件表达式永远为 True,那么循环就会一直执行下去,永不停止,这就是无限循环。
不小心写出无限循环是初学者常见的错误,通常是因为忘记在循环体中修改条件表达式里的变量(比如忘记 count = count + 1)。
3.1 一个简单的无限循环例子
1 | var = 1 |
运行结果(示例):
1 | 请输入一个数字 (输入 'q' 退出): 123 |
这个例子中,我们用 break 语句给了用户一个退出无限循环的途径。
3.2 如何终止不小心写出的无限循环?
如果你的程序陷入了无限循环,可以:
- 在大多数 Python IDE(如 PyCharm, VS Code)中,可以点击停止按钮。
- 在命令行或终端中运行时,可以按
Ctrl + C组合键来强制终止程序。
4. while ... else 语句
Python 的 while 循环还有一个特殊的语法:可以和 else 子句一起使用。
语法:
1 | while 条件表达式: |
作用:else 子句中的代码块,会在 while 循环的条件变为 False,并且循环体是正常执行完毕.即不是因为执行了 break 语句而退出
实例
1 | count = 0 |
运行结果:
1 | 0 小于 5 |
如果循环中出现 break
1 | count = 0 |
运行结果:
1 | 0 小于 5 |
可以看到,因为循环是通过 break 结束的,else 子句没有执行。
5. 简单语句组
如果 while 循环的循环体中只有一条语句,你可以将这条语句与 while 写在同一行。这只是一种简写形式,不影响功能。
语法:
1 | while 条件表达式: 一条语句 |
实例:
1 | flag = 1 |
但这种方式不推荐,虽然简洁,但如果循环体逻辑稍微复杂一点,这种写法会降低代码的可读性。对于初学者,建议还是使用标准的缩进形式
For 循环语句
for 循环是 Python 中另一种非常强大的循环结构。与 while 循环侧重于,当条件满足时就一直做不同,for 循环更侧重于对序列中的每个元素,都做一次。
简单说,for 循环最擅长的就是遍历——即依次访问序列中的每一个元素
2.1 for 循环的基本结构
1 | for 变量 in 序列: |
- **
for**:Python 关键字,标记一个for循环的开始。 - 变量:也叫“迭代变量”或“循环变量”。在每一次循环中,这个变量会被赋值为序列中的下一个元素。
- **
in**:Python 关键字,用于连接变量和序列,表示“在…之中”。 - 序列:一个包含多个元素的对象,例如字符串、列表、元组等。
for循环会依次取出序列中的元素。 - **冒号
:**:表示序列的结束,以及循环体的开始。 - 循环体语句:对序列中的每个元素要执行的操作。循环体必须缩进(通常是 4 个空格)。
2.2 for 循环是如何工作的?
执行步骤:
- 从序列中取出第一个元素。
- 如果序列中还有元素,即没有取完
- 将取出的元素赋值给“变量”。
- 执行缩进的循环体语句(也就是使用当前变量的值)。
- 执行完一遍循环体后,回到步骤 1 取下一个元素。
- 如果序列中没有元素了,即所有元素都已处理完毕
- 退出
for循环。 - 继续执行
for循环后面的代码。
- 退出
2.3 实例1:遍历字符串
字符串是字符的序列。我们可以用 for 循环遍历字符串中的每个字符。
1 | # 实例1:遍历字符串 |
运行结果:
1 | 当前字母: P |
2.4 实例2:遍历列表
列表是 Python 中最常用的序列类型之一,可以包含各种类型的元素。
1 | # 实例2:遍历列表 |
运行结果:
1 | 当前水果: 香蕉 |
2.5 通过序列索引进行遍历,配合 range() 和 len()
有时候,我们不仅需要元素的值,还需要知道元素在序列中的位置。这时,可以使用 range() 函数配合 len() 函数来生成索引序列,然后通过索引访问元素。
- **
len(序列)**:返回序列的长度,即元素的个数。 - **
range(stop)**:生成一个从0开始,到stop-1结束的整数序列。例如range(5)生成0, 1, 2, 3, 4。 - **
range(start, stop)**:生成从start开始,到stop-1结束的整数序列。
实例3:使用索引遍历列表
1 | fruits = ['香蕉', '苹果', '芒果'] |
运行结果:
1 | 索引: 0 ,水果: 香蕉 |
这种方式类似于其他语言中常见的 for (i=0; i<N; i++) 形式。
2.6 for 循环中的 break 和 continue
和 while 循环一样,for 循环也可以配合 break 和 continue 这两个控制语句来改变循环的执行流程。
- **
break**:立即终止整个for循环,跳出循环体。 - **
continue**:跳过当前这次循环中continue后面的语句,直接开始下一次循环(取下一个元素)。
实例4:break 示例 - 找到 ‘苹果’ 就停止
1 | fruits = ['香蕉', '苹果', '芒果', '橘子'] |
运行结果:
1 | 当前水果: 香蕉 |
芒果 和 橘子 没有被打印,因为循环已经被 break 终止了
实例5:continue 示例 - 跳过 ‘苹果’
1 | fruits = ['香蕉', '苹果', '芒果', '橘子'] |
运行结果:
1 | 当前水果: 香蕉 |
(’苹果’ 被 continue 跳过了。)
2.7 for ... else 语句:循环正常结束时执行的操作
与 while ... else 类似,for 循环也可以搭配 else 子句。
语法:
1 | for 变量 in 序列: |
作用:else 子句中的代码块,会在 for 循环完整地遍历了序列中的所有元素,并且没有因为执行 break 语句而提前退出的情况下执行。
实例6:判断列表中是否有负数,无 break 则 else 执行
1 | numbers = [1, 3, 5, 7, 9] |
运行结果:
1 | 列表中没有负数。 |
实例7:判断列表中是否有负数,有 break 则 else 不执行
1 | numbers = [1, -3, 5, 7, 9] |
运行结果:
1 | 发现负数: -3 |
经典应用:判断质数
下面是一个更实用的例子,用 for ... else 结构判断一个数是否为质数:
1 | num = 17 # 我们要判断的数 |
运行结果:
1 | 17 是一个质数 |
如果把 num 改成 15:
1 | 15 等于 3 * 5 |
2.8 更多实例:用 for 循环打印图案
for 循环非常适合用来打印各种有规律的文本图案,比如三角形、矩形、菱形等。这通常会用到嵌套 for 循环。即,一个 for 循环里面再包含一个或多个 for 循环
实例8:打印一个 5x5 的矩形星号 (*)
1 | # 打印矩形 |
运行结果:
1 | * * * * * |
实例9:打印一个直角三角形
1 | # 打印直角三角形 (靠右对齐) |
运行结果:
1 | * |
这些图案打印练习能很好地帮助你理解循环的控制流程,特别是嵌套循环。
嵌套循环
一、什么是循环嵌套?
可以类比为,你要做多层嵌套的俄罗斯套娃,或者盖一栋有多层房间的楼房。在编程里,循环嵌套就是在一个循环的“身体里”再放进另一个循环。就像你写作业时,先按科目循环,比如先做数学、再做语文……每个科目里又按题目循环,第一题、第二题……
Python 里不管是 for 循环还是 while 循环,都能互相嵌套。比如:
for里套forfor里套whilewhile里套forwhile里套while
二、循环嵌套的基本语法
(一)for 循环嵌套 for 循环
1 | for 外层变量 in 外层序列: |
(二)while 循环嵌套 while 循环
1 | 外层条件 = 初始值 |
(三)混合嵌套(比如 for 套 while,while 套 for)
原理和上面一样,只要记住内层循环要完全“包裹”在外层循环的缩进块里,Python 靠缩进来区分不同层级的循环体~
三、循环嵌套如何执行?
看个简单例子:打印一个 3 行 4 列的星号矩形
1 | for 行 in range(3): # 外层循环控制“行”,执行 3 次(行号 0,1,2) |
执行流程拆解:
- 外层循环第 1 次(行=0):
- 进入内层循环,列从 0 到 3,依次打印
*,所以第一行是* * * * - 内层循环结束后,执行
print()换行
- 进入内层循环,列从 0 到 3,依次打印
- 外层循环第 2 次(行=1):
- 内层循环再执行 4 次,打印第二行
* * * * - 换行
- 内层循环再执行 4 次,打印第二行
- 外层循环第 3 次(行=2):
- 内层循环再执行 4 次,打印第三行
* * * * - 换行
最终输出:1
2
3* * * *
* * * *
* * * *
- 内层循环再执行 4 次,打印第三行
四、实战:用嵌套循环找 2~100 的素数
素数是指只能被 1 和它本身整除的大于 1 的整数。比如 2、3、5、7 是素数,4、6不是
先暂停一下,思考思考,再看下面的内容!!!
思路:
- 外层循环
i从 2 遍历到 99(因为要找 2~100 的数)。 - 对每个
i,用内层循环j去试除:从 2 开始,直到j ≤ i/j.这样可以减少计算次数,比如 i=100 时,j 只需要试到 10 就行,因为 10*10=100 - 如果
i % j == 0,说明i能被j整除,不是素数,立刻break内层循环。 - 如果内层循环跑完了都没找到能整除的
j.即,内层循环是自然结束,不是被break打断的),说明i是素数,打印出来
代码实现(while 套 while):
1 | i = 2 |
代码执行逻辑拆解:
拿 i=9 举例:
- 外层循环
i=9,进入内层循环j=2。 - 检查
j <= 9/j→ 2 ≤ 4.5 → 成立。 - 检查
9%2→ 余 1,不能整除,所以j +=1→ j=3。 - 再检查
j <= 9/j→ 3 ≤ 3 → 成立。 - 检查
9%3→ 余 0,能整除 →break内层循环。 - 内层循环被
break打断,所以不会执行if j > i/j里的打印,i=9不是素数。
再拿 i=7 举例:
- 外层循环
i=7,内层循环j=2。 j <=7/2→ 2 ≤ 3.5 → 成立。7%2=1→ 不能整除,j=3。- 检查
j <=7/3→ 3 ≤ 2.333… → 不成立!所以内层循环自然结束 - 此时
j=3 > 7/3≈2.333→ 满足条件,打印7 是素数。
五、循环嵌套的注意事项
- 缩进要清晰:内层循环必须比外层循环多缩进(通常 4 个空格,这是第N次强调了),否则 Python 会分不清哪层是哪层。
- 小心无限循环:内层和外层循环都要记得更新循环条件!比如外层
while里的变量要递增,内层while里的变量也要递增,否则容易无限循环。 - 性能问题:嵌套层数越多,执行次数呈指数级增长,比如 3 层循环,每层循环 10 次,总执行次数是 10×10×10=1000 次。如果嵌套太多,程序可能会很慢,实际开发要谨慎
六、拓展练习:用 for 套 for 实现素数判断
把上面的 while 套 while 改成 for 套 for,感受不同循环嵌套的写法。老规矩,先自己写,再看参考代码
1 | for i in range(2, 100): # 外层 for 循环,i 从 2 到 99 |
这里用 range(2, int(i**0.5)+1) 代替了 while j <= i/j,逻辑更简洁。原理是一样的,只要试除到平方根就够了
break 语句
一、break 是做什么的?
就像你在玩闯关游戏,每一关是循环里的一次迭代。当你触发 break,比如,找到关键道具、触发特殊条件,不管循环有没有执行完,都会立刻终止当前所在的那一层循环,直接跳出循环体,去执行循环后面的代码
简单说,break 就是循环的紧急停止按钮,让循环提前结束
二、break 的基本语法
break 是 Python 的关键字,单独使用,不需要加括号或参数,写在循环体中
(一)在 for 循环中用 break
1 | for 变量 in 序列: |
(二)在 while 循环中用 break
1 | while 条件: |
三、break 如何工作?
以 for 循环为例:
四、实例演示:break 在 for 和 while 中怎么用?
(一)实例1:for 循环中遇到 ‘h’ 就停止
1 | for letter in 'Python': |
执行结果:
1 | 当前字母: P |
解释:for 循环原本要遍历 ‘P’,’y’,’t’,’h’,’o’,’n’,但当遍历到 ‘h’ 时,break 触发,循环直接终止,所以后面的 ‘o’、’n’ 没机会被处理。
(二)实例2:while 循环中变量到 5 就停止
1 | var = 10 |
执行结果:
1 | 当前变量值: 10 |
解释:while 条件是 var > 0,原本要从 10 减到 1。但当 var 减到 5 时,break 触发,循环终止,所以 4、3、2、1 不会被打印。
五、break 在嵌套循环中的表现
如果是嵌套循环,比如 for 套 for,while 套 while,或者混合嵌套,break 只会终止它所在的那一层循环,不会影响外层循环
实例3:嵌套 for 循环中,break 只终止内层循环
1 | # 外层循环控制行 |
执行结果:
1 | (0,0) (0,1) |
解释:
- 外层循环
row从 0 到 2(共 3 行)。 - 内层循环
col从 0 到 3,但每次到col=2时,break终止当前这一层循环,所以每行只打印col=0和col=1。 - 内层循环终止后,回到外层循环,继续下一行
六、break 的常见使用场景
- 提前终止循环:当已经找到目标结果,不需要再继续循环时,比如找列表中的某个元素,找到就停止
- 避免无效计算:当循环中出现不可能满足条件的情况,及时终止节省性能,比如判断质数时,一旦找到能整除的数,立刻停止试除
- 用户交互退出:比如写一个命令行程序,用户输入特定指令时,用
break终止循环,退出程序
七、需要注意的地方
break只能用在循环体(即,for或while的缩进块)里,否则会报错(SyntaxError)。- 在嵌套循环中,
break只影响当前所在的那一层循环,外层循环会继续执行。如果想同时终止多层循环,需要结合标志位(flag)或者其他逻辑
continue 语句
一、continue 是什么?和 break 有什么区别?
如果说 break 是循环的紧急停止按钮,那么 continue 就是循环的跳过当前按钮。它不会终止整个循环,只会跳过当前这次迭代中 continue 后面的代码,直接开始下一次循环。
简单来说:
break→ 彻底不干了。continue→ 这次不干了,下次继续
二、continue 的基本语法
和 break 一样,continue 也是 Python 关键字,单独使用,写在循环体的缩进块里,通常和 if 条件配合使用。
(一)在 for 循环中用 continue
1 | for 变量 in 序列: |
(二)在 while 循环中用 continue
1 | while 条件: |
三、continue 如何工作?
以 for 循环为例:
四、实例演示:continue 在 for 和 while 中怎么用?
(一)实例1:for 循环中跳过 ‘h’
1 | for letter in 'Python': |
执行结果:
1 | 当前字母: P |
解释:for 循环遍历 ‘P’,’y’,’t’,’h’,’o’,’n’。当 letter='h' 时,continue 触发,跳过 print 语句,直接开始下一次迭代(取下一个字母 ‘o’)。所以 ‘h’ 没有被打印,但循环没有终止,后面的 ‘o’ 和 ‘n’ 正常打印。
(二)实例2:while 循环中跳过 5
1 | var = 10 |
执行结果:
1 | 当前变量值: 9 |
解释:
var从 10 开始,每次循环先var -= 1(更新变量)。- 当
var=5时,continue触发,跳过print语句,直接开始下一次循环(var继续减到 4,以此类推)。 - 注意:如果把
var -= 1放在if var ==5: continue后面,当var=5时,continue会跳过var -=1,导致var永远是 5,进入无限循环!
五、continue 在嵌套循环中的表现
和 break 类似,continue 也只影响它所在的那一层循环,不会影响外层循环。
实例3:嵌套 for 循环中,continue 只跳过当前内层迭代
1 | # 外层循环控制行(0,1,2) |
执行结果:
1 | (0,0) (0,1) (0,3) |
解释:
- 内层循环
col从 0 到 3,当col=2时,continue跳过当前列的print,直接进入下一次内层循环(col=3)。 - 外层循环不受影响,正常执行 3 行。
六、continue 的常见使用场景
- 过滤不需要的元素:遍历序列时,跳过不符合条件的元素,比如说,打印列表中所有偶数,跳过奇数
- 跳过异常情况:处理数据时,遇到无效数据或错误格式,跳过当前处理,继续下一个
七、while 循环中使用 continue 的陷阱
在 while 循环中使用 continue 时,一定一定要保证在 continue 语句执行前,已经更新了循环条件变量!否则可能导致变量永远不满足退出条件,陷入无限循环
错误示例(无限循环):
1 | var = 10 |
运行后会无限循环,永远停在 var=5。
正确做法,先更新变量,再判断 continue:
1 | var = 10 |
这样 var 会正常递减,不会无限循环
pass 语句
一、pass 是做什么的?
假如,你在写作文大纲,先把框架列好,但某些部分还没想好具体内容。pass 就像大纲里的占位符,它什么实际操作都不做,但能让代码结构保持完整,避免语法错误
简单说来说,pass 是 Python 的空语句,专门用来占位置,让代码能跑通,后续再填充逻辑
二、pass 的基本语法
pass 是 Python 关键字,单独写一行,没有参数,也不需要括号。
1 | # 单独使用 pass |
三、为什么需要 pass?
Python 是缩进敏感的语言,代码块必须有缩进的内容,否则会报错(SyntaxError🤣)
比如,你想先写个 if 结构,但暂时没想好 if 满足时做什么:
1 | age = 18 |
这时候,pass 就能救场:
1 | age = 18 |
四、实例演示:pass 在不同场景的使用
(一)实例1:for 循环中用 pass 占位
1 | for letter in 'Python': |
执行结果:
1 | 当前字母: P |
解释:
当 letter='h' 时,进入 if 分支,执行 pass(啥都不做),然后执行 print('这是 pass 块') 和 print('当前字母: h')。pass 只是占位置,不影响其他代码执行。
(二)实例2:定义空函数时用 pass
如果想先定义一个函数,但还没写实现逻辑,可以用 pass 占位:
1 | def my_function(): |
(三)实例3:定义空类时用 pass
同理,定义类但暂时不想写属性/方法时:
1 | class MyClass: |
(四)实例4:if-else 结构中用 pass 占位
1 | score = 85 |
执行后,当 score=85 时,进入 elif 分支,执行 pass(摸鱼🐟),然后程序继续往下走。
五、pass 和 注释 有什么区别?
- 注释(
#开头):是给人看的说明,Python 会直接忽略,不会占代码结构的位置。如果用注释代替pass放在代码块里,会因为代码块为空报错 - pass:是给 Python 看的空操作,会让代码块有内容,避免语法错误,同时不影响程序执行逻辑
比如,错误示范(用注释代替 pass):
1 | if True: |
正确示范(用 pass):
1 | if True: |
六、pass 的使用场景总结
- 代码草稿阶段:先把结构,比如循环、分支、函数、类搭好,用
pass占住每个代码块的位置,后续再填充逻辑 - 临时占位:调试代码时,想跳过某段逻辑但又不想删除代码,用
pass暂时替代,保留结构。 - 满足语法要求:Python 规定代码块不能空,
pass用来充数,让语法合法。
七、pass 只占位置,不影响逻辑
pass 什么都不做,所以不会改变程序执行流程。比如在循环里用 pass,循环会正常执行迭代,只是当前迭代里 pass 所在的代码块啥都没干。
比如:
1 | for i in range(3): |
执行结果:
1 | 0 |
i=1 时,pass 只是占位置,print(i) 依然会执行~
学会 pass ,代码结构也不会因为暂时没内容而报错啦 🛠️ 写代码时,先搭框架,再填细节,这样效率会高很多
练习
一、基础热身:循环语法与控制流
练习1:打印1~10中的偶数(用 for 循环 + continue)
要求:遍历1到10,跳过奇数,打印所有偶数。
提示:用 range(1, 11) 生成1~10,判断 i % 2 != 0 时用 continue 跳过。
参考答案
1 | for i in range(1, 11): |
练习2:计算1~100的和(用 while 循环 + break)
要求:从1开始累加,当和超过2000时停止,打印最终的和与此时的数字。
提示:用 while True 无限循环,累加后判断是否超过2000,超过则 break。
参考答案
1 | total = 0 |
练习3:用 pass 完善代码框架
要求:补全以下代码,当 score >= 60 时打印“及格”,否则用 pass 占位(不做任何事)。
1 | score = 55 |
参考答案
1 | score = 55 |
二、进阶实战:循环嵌套与逻辑综合
练习4:打印99乘法表(嵌套 for 循环)
要求:用嵌套循环打印经典的99乘法表,格式如下(只打印到 i*j,不超过10):
1 | 1×1=1 |
提示:外层循环控制行数 i(19),内层循环控制列数 i)。j(1
参考答案
1 | for i in range(1, 10): |
练习5:寻找100~200中的质数(break 优化)
要求:找出100到200之间的所有质数(只能被1和自身整除的数),并打印。
提示:
- 质数判断:对于
num,检查2到sqrt(num)之间是否有除数,有则不是质数,用break提前退出检查。 - 用
math.sqrt()计算平方根(需import math)。
参考答案
1 | import math |
练习6:猜数字游戏(while + break + 条件判断)
要求:程序随机生成1~100的整数,用户输入数字猜大小,直到猜对为止,统计猜的次数。
提示:
- 用
random.randint(1, 100)生成随机数(需import random)。 - 用
while True循环,猜对时break,否则提示“太大”或“太小”。
参考答案
1 | import random |
三、综合挑战:循环与列表/字符串结合
练习7:筛选列表中的特定元素(for + continue)
要求:给定列表 numbers = [1, -2, 3, -4, 5, -6, 7, -8, 9],筛选出所有正数并计算它们的平方和。
提示:遍历列表,遇到负数用 continue 跳过,正数则累加平方。
参考答案
1 | numbers = [1, -2, 3, -4, 5, -6, 7, -8, 9] |
练习8:字符串去重与逆序(循环 + 条件判断)
要求:给定字符串 s = "abracadabra",完成以下操作:
- 去重:保留首次出现的字符,删除后续重复字符(结果为
"abrcd")。 - 逆序:将去重后的字符串逆序输出(结果为
"dc rba")。
提示:
- 去重:用空列表记录已出现的字符,遍历字符串时判断是否在列表中,不在则添加。
- 逆序:用
[::-1]或循环倒序拼接。
参考答案
1 | s = "abracadabra" |
四、思考题:深度理解循环控制
练习9:以下代码的输出是什么?为什么?
1 | for i in range(5): |
提示:for-else 结构中,else 只在循环正常结束(未被 break 终止)时执行。
答案与解析
输出:
1 | 0 |
解析:
i=0:打印0;i=1:打印1;i=2:continue跳过打印;i=3:打印3后break终止循环,else不执行。
练习10:用 while 循环实现“斐波那契数列”前10项
斐波那契数列:1, 1, 2, 3, 5, 8…(从第3项起,每项是前两项之和)。
要求:用 while 循环生成前10项并打印。
参考答案
1 | a, b = 1, 1 # 前两项 |








