Python(十三) 中的中断语句和流程控制语句
一、什么是中断语句
在 Python 中,中断语句通常指能够改变程序正常执行顺序的语句。
正常情况下,程序会从上到下一行一行执行。
但是有时候,我们希望程序:
提前结束循环
跳过本次循环
先占一个位置,以后再写代码
提前结束函数
主动抛出错误
这时就会用到一些特殊的流程控制语句。
初学阶段最常见、最重要的是下面三个:
break
continue
pass
另外,为了教学更完整,也可以简单了解:
return
raise
它们也会改变程序的执行流程,但使用场景和 break、continue、pass 不完全一样。
二、常见语句对比
可以先用一张表帮助学生建立整体认识。
语句 主要作用
break 结束整个循环
continue 跳过本次循环,进入下一次循环
pass 什么也不做,只是占位
return 结束函数,并返回结果
raise 主动抛出异常,打断正常执行流程
简单记忆:
break:不循环了
continue:这一次不做了,继续下一次
pass:先空着,以后再写
return:函数到这里结束
raise:这里出错了,抛出异常
三、break 语句
1. break 的定义
break 的作用是立刻结束当前所在的整个循环。
只要程序执行到 break,循环就会马上停止,后面的循环次数不会再执行。
break 常用于:
找到目标后停止查找
用户输入正确后停止重复输入
满足某个条件后提前结束循环
2. break 的基本用法
示例:循环输出 1 到 5,遇到 3 时停止。
for i in range(1, 6):
if i == 3:
break
print(i)
输出结果:
1
2
执行过程:
i = 1,没有遇到 break,输出 1
i = 2,没有遇到 break,输出 2
i = 3,满足 i == 3,执行 break,循环结束
注意:i 等于 3 时,print(i) 没有执行。
3. break 在 while 循环中的使用
示例:输入密码,直到密码正确为止。
while True:
password = input("请输入密码:")
if password == "123456":
print("登录成功")
break
else:
print("密码错误,请重新输入")
这里的 while True 表示一直循环。
如果用户输入的密码是 "123456",就输出“登录成功”,然后执行 break,结束循环。
如果密码不正确,就继续下一次输入。
4. break 只结束当前这一层循环
如果有嵌套循环,break 只会结束它所在的那一层循环,不会直接结束所有循环。
示例:
for i in range(1, 4):
for j in range(1, 4):
if j == 2:
break
print("i =", i, "j =", j)
输出结果:
i = 1 j = 1
i = 2 j = 1
i = 3 j = 1
解释:
内层循环中 j 等于 2 时,break 结束的是内层循环。
外层循环还会继续执行。
如果想结束多层循环,需要额外使用标记变量,或者把代码封装到函数中,用 return 结束函数。
四、continue 语句
1. continue 的定义
continue 的作用是跳过本次循环剩下的代码,直接进入下一次循环。
也就是说,continue 不是结束整个循环,而是结束“当前这一次”。
continue 常用于:
跳过不符合条件的数据
过滤掉不想处理的内容
遇到特殊情况时不执行本次后续代码
2. continue 的基本用法
示例:输出 1 到 5,但跳过 3。
for i in range(1, 6):
if i == 3:
continue
print(i)
输出结果:
1
2
4
5
执行过程:
i = 1,输出 1
i = 2,输出 2
i = 3,执行 continue,跳过本次 print(i)
i = 4,输出 4
i = 5,输出 5
3. continue 在数据过滤中的使用
示例:只输出列表中的正数。
numbers = [3, -1, 5, 0, -2, 8]
for num in numbers:
if num <= 0:
continue
print(num)
输出结果:
3
5
8
解释:
如果 num 小于等于 0,就执行 continue,跳过本次循环。
只有正数才会执行 print(num)。
4. continue 在 while 循环中要特别小心
在 while 循环中使用 continue 时,要特别注意变量是否已经改变。
错误示例:
i = 0
while i < 5:
if i == 2:
continue
print(i)
i = i + 1
这段代码会出现死循环。
原因是:
当 i 等于 2 时,执行 continue。
continue 会跳过后面的 print(i) 和 i = i + 1。
所以 i 一直是 2,循环永远不会结束。
正确写法:
i = 0
while i < 5:
i = i + 1
if i == 3:
continue
print(i)
输出结果:
1
2
4
5
教学提醒:
while 循环中使用 continue 前,要确保循环条件有机会改变。
五、pass 语句
1. pass 的定义
pass 的作用是什么也不做,只是占一个位置。
严格来说,pass 并不会中断程序,也不会跳过循环。
它是一个“空语句”。
Python 的语法要求某些地方必须写代码块,例如:
if 后面
for 后面
while 后面
函数体中
类的内部
except 后面
如果暂时没有代码可写,就可以先写 pass,表示“这里先空着”。
2. pass 的基本用法
示例:
age = 18
if age >= 18:
pass
else:
print("未成年")
这里的意思是:
如果 age >= 18,暂时什么也不做。
否则,输出“未成年”。
3. pass 用在函数中
当我们先写好函数结构,但暂时还没想好函数内容时,可以使用 pass。
def login():
pass
如果不写 pass,函数体为空,程序会报错。
错误写法:
def login():
正确写法:
def login():
pass
4. pass 用在类中
示例:
class Student:
pass
这表示先定义一个 Student 类,类里面暂时不写具体内容。
5. pass 用在异常处理中
示例:
try:
num = int(input("请输入一个数字:"))
except ValueError:
pass
这段代码表示:
如果用户输入的内容不能转换成整数,暂时什么也不做。
不过教学时要提醒学生:不要随便用 pass 忽略错误。
更推荐的写法是给出提示:
try:
num = int(input("请输入一个数字:"))
except ValueError:
print("输入错误,请输入整数")
6. pass 和 continue 的区别
pass 和 continue 很容易混淆。
看下面的例子:
for i in range(1, 4):
if i == 2:
pass
print(i)
输出结果:
1
2
3
因为 pass 什么也不做,程序会继续执行后面的 print(i)。
再看 continue:
for i in range(1, 4):
if i == 2:
continue
print(i)
输出结果:
1
3
因为 continue 会跳过本次循环后面的代码,所以 i 等于 2 时不会输出。
简单对比:
pass:什么也不做,然后继续往下执行
continue:跳过本次循环后面的代码,直接进入下一次循环
六、return 语句
1. return 的定义
return 的作用是结束函数,并把结果返回给调用函数的位置。
return 主要用在函数中。
严格来说,return 不属于循环中的中断语句,但它会中断函数的继续执行。
如果 return 写在循环里面,那么函数会直接结束,循环也会跟着结束。
2. return 的基本用法
示例:
def add(a, b):
return a + b
result = add(3, 5)
print(result)
输出结果:
8
解释:
return a + b 表示把 a + b 的结果返回出去。
3. return 会结束函数
示例:
def test():
print("第一行")
return
print("第二行")
test()
输出结果:
第一行
return 后面的 print("第二行") 不会执行。
4. return 可以用于提前结束查找
示例:判断列表中是否有目标数字。
def has_number(numbers, target):
for num in numbers:
if num == target:
return True
return False
result = has_number([1, 2, 3, 4], 3)
print(result)
输出结果:
True
解释:
一旦找到 target,就 return True,函数马上结束。
如果循环结束还没找到,就 return False。
七、raise 语句
1. raise 的定义
raise 的作用是主动抛出异常。
异常可以理解为程序运行中出现的问题。
当执行到 raise 时,程序的正常流程会被打断。
初学阶段不需要深入掌握所有异常机制,但要知道 raise 是用来主动报告错误的。
2. raise 的基本用法
示例:年龄不能为负数。
age = -1
if age < 0:
raise ValueError("年龄不能是负数")
程序运行到这里会抛出错误:
ValueError: 年龄不能是负数
3. raise 常用于检查参数
示例:
def set_age(age):
if age < 0:
raise ValueError("年龄不能是负数")
print("年龄是:", age)
set_age(18)
如果传入 18,程序正常执行。
如果传入 -1,程序会主动抛出异常。
教学时可以这样解释:
raise 就像程序主动说:“这里的数据不合理,我不能继续按正常方式执行。”
八、循环中的 else 和 break
Python 的循环可以和 else 搭配使用。
循环中的 else 表示:循环正常结束时执行。
如果循环被 break 提前结束,else 不会执行。
示例 1:循环正常结束。
for i in range(3):
print(i)
else:
print("循环正常结束")
输出结果:
0
1
2
循环正常结束
示例 2:循环被 break 打断。
for i in range(5):
if i == 3:
break
print(i)
else:
print("循环正常结束")
输出结果:
0
1
2
因为循环遇到了 break,所以 else 不会执行。
教学提醒:
循环中的 else 不常用,初学者了解即可。
重点掌握 break、continue、pass。
九、常见注意事项
1. break 和 continue 只能写在循环中
break 和 continue 必须写在 for 或 while 循环里面。
错误写法:
if True:
break
这会报错,因为 break 不在循环中。
错误写法:
if True:
continue
这也会报错,因为 continue 不在循环中。
2. pass 可以用在需要代码块但暂时不写内容的地方
例如:
if True:
pass
def func():
pass
class Student:
pass
pass 不会报错,也不会做任何事情。
3. break 只结束当前循环
如果是嵌套循环,break 只结束当前所在的那一层循环。
示例:
for i in range(3):
for j in range(3):
if j == 1:
break
print(i, j)
这里的 break 结束的是内层 for j in range(3),外层循环还会继续。
4. continue 会跳过本次循环后面的代码
示例:
for i in range(1, 4):
if i == 2:
continue
print("当前数字是:", i)
当 i 等于 2 时,print() 被跳过。
5. while 循环中使用 continue 要防止死循环
错误示例:
i = 0
while i < 5:
if i == 2:
continue
print(i)
i = i + 1
这段代码的问题是:
i 等于 2 时,continue 会跳过 i = i + 1。
所以 i 永远是 2,循环不会结束。
正确思路:
在 continue 之前,先让循环变量发生变化。
6. 不要用 pass 随便忽略问题
pass 虽然方便,但不能乱用。
不推荐:
try:
num = int(input("请输入数字:"))
except ValueError:
pass
这样会让错误悄悄消失,用户不知道发生了什么。
更推荐:
try:
num = int(input("请输入数字:"))
except ValueError:
print("输入错误,请输入数字")
7. break 和 continue 常常配合 if 使用
单独写 break 或 continue 虽然可以,但通常没有意义。
常见写法是:
for i in range(10):
if i == 5:
break
print(i)
或者:
for i in range(10):
if i % 2 == 0:
continue
print(i)
也就是说,通常是先判断某个条件,再决定是否中断或跳过。
8. 代码要清楚,不要为了炫技而复杂
中断语句可以让代码更灵活,但使用太多也会让代码难懂。
教学时可以提醒学生:
能不用复杂中断就不用复杂中断。
条件清楚、逻辑清楚,比写得花哨更重要。
十、课堂示例
示例 1:找到第一个偶数后停止
numbers = [1, 3, 5, 8, 10]
for num in numbers:
if num % 2 == 0:
print("找到第一个偶数:", num)
break
讲解:
循环依次检查每个数字。
找到第一个偶数后,使用 break 结束循环。
示例 2:跳过所有负数
numbers = [3, -2, 5, -1, 8]
for num in numbers:
if num < 0:
continue
print(num)
输出结果:
3
5
8
讲解:
遇到负数时,使用 continue 跳过本次循环。
只输出非负数。
示例 3:先写结构,暂时不写功能
def register():
pass
def login():
pass
def logout():
pass
讲解:
pass 可以先占位置。
等以后想清楚具体功能后,再把 pass 换成真正的代码。
示例 4:用户输入 q 时退出
while True:
text = input("请输入内容,输入 q 退出:")
if text == "q":
print("程序结束")
break
print("你输入的是:", text)
讲解:
while True 表示一直循环。
当用户输入 q 时,用 break 结束循环。
示例 5:函数中提前返回
def check_score(score):
if score < 0 or score > 100:
return "成绩不合法"
if score >= 60:
return "及格"
else:
return "不及格"
result = check_score(85)
print(result)
讲解:
return 会结束函数。
一旦遇到 return,函数后面的代码就不会继续执行。
十一、课堂练习
练习 1:遇到 6 停止
要求:输出 1 到 10,遇到 6 时停止。
参考代码:
for i in range(1, 11):
if i == 6:
break
print(i)
练习 2:跳过 3 的倍数
要求:输出 1 到 10,但跳过 3 的倍数。
参考代码:
for i in range(1, 11):
if i % 3 == 0:
continue
print(i)
练习 3:完善函数结构
要求:先定义三个函数,函数内容暂时不写。
参考代码:
def add_student():
pass
def delete_student():
pass
def search_student():
pass
练习 4:输入密码,最多尝试 3 次
参考代码:
for i in range(3):
password = input("请输入密码:")
if password == "123456":
print("登录成功")
break
else:
print("密码错误")
else:
print("尝试次数已用完")
讲解重点:
密码正确时,break 结束循环。
如果 3 次都没有 break,循环正常结束,执行 else。
十二、教学建议
讲解这部分内容时,可以按下面顺序进行:
1. 先复习 for 循环和 while 循环
2. 引出“有时候不想完整执行循环”
3. 先讲 break:直接结束循环
4. 再讲 continue:跳过本次循环
5. 然后讲 pass:占位,什么也不做
6. 最后简单补充 return 和 raise
可以用下面的问题引导学生思考:
如果已经找到了想要的数据,还需要继续找吗?
如果这一次的数据不符合要求,能不能跳过它?
如果函数还没想好怎么写,能不能先把结构写出来?
如果输入的数据明显不合理,程序应该怎么办?
这样学生更容易理解这些语句的实际用途。
十三、总结
Python 中常见的中断和流程控制语句有:
break:
结束当前循环。
continue:
跳过本次循环,进入下一次循环。
pass:
什么也不做,只是占位。
return:
结束函数,并返回结果。
raise:
主动抛出异常,打断正常执行流程。
初学阶段重点掌握:
break
continue
pass
最容易混淆的是:
break 和 continue
pass 和 continue
可以这样记:
break:循环到此结束
continue:本次到此结束
pass:这里先空着
return:函数到此结束
raise:程序发现问题,主动报错
一句话总结:
中断语句和流程控制语句可以让程序不再只是机械地从上到下执行,而是能根据情况提前结束、跳过、占位或报告错误。