3.Python循环语句
3. 循环语句
3.1 while 循环
引入
不知道大家是否喜欢下象棋,反正楼下大爷还是挺喜欢的~
如果这盘棋下完了,可以收拾一下接着重来一局,这重来一局说到底就是重复
软件中也是需要这样的功能的,像打游戏(这个大家都有经验就不过多说了)时这局没吃到”鸡”,可以再重新玩一局对嘛,这也是重复
程序中的重复执行功能是怎样实现的呢?
答:循环
软件中循环的使用场景
跟媳妇承认错误,说一万遍”媳妇,我错了”
1 | print("媳妇,我错了") |
使用循环语句一句话搞定:
1 | i = 0 |
Python 中的循环方式
Python中只有2种循环执行代码的方式
while循环for循环
tips:
学过其它编程语言的同学请注意,Python中没有do-while循环,只有while和for
while 循环的使用
代码格式:
1 | while 条件: |
示例:
1 | i = 0 |
结果:
1 | 当前是第1次执行循环 |
说明:
- 先判断
i < 5条件是否为真,此时i为0所以,i < 5结果为真 - 接下来执行2个
print语句,然后执行i+=1,此时i变成了1 - 再执行
i < 5此时相当于1 < 5结果为True,所以继续执行2次print,接下来i变为2。剩下的就是重复的过程了,我们不再赘述 - 当执行
i += 1后i的值为5的时候,接下来执行while i < 5此时i < 5结果为假,所以while条件不满足,此时while循环结束
总结
while和if的用法基本类似,区别在于:if条件成立,则执行一次;while条件成立,则重复执行,直到条件不成立为止。- 一般情况下,需要多次重复执行的代码,都可以用循环的方式来完成
- 循环不是必须要使用的,但是为了提高代码的重复使用率,所以有经验的开发者都会采用循环
3.2 while 循环应用
代码难度等级:简单
应用一:
要求:计算1~100的累积和(包含1和100)
参考代码如下:
1 | i = 1 |
应用二:
要求:计算1~100之间偶数的累积和(包含1和100)
参考代码如下:
1 | i = 1 |
代码难度等级:较难
应用三:
要求:实现计算1~100之间能被3整除且能够7整除的所有数之和
参考代码如下:
1 | i = 1 |
应用四:
要求:使用while循环编写代码试如下效果
1 | 1--->1 |
参考代码如下:
1 | i = 1 |
3.3 while 循环嵌套
引入
想一想:while循环可以将原本写多遍重复的代码改成只写1遍,从而提高了代码的复用性;那如果在一次while循环的过程中有多个重复的功能要执行,该怎么办呢?
为了更好理解这个问题,看如下代码:
1 | print("小明: 咱们去打球~") |
发现上述的代码,整体来说是重复的,可以用while进行升级,代码如下:
1 | i = 0 |
上述的代码确实有了很大的提升,代码量减少了很多很多,但 这还不够,仔细观察会发现 print("哈哈")重复了3次
这个问题就是上面我们提到的在while循环过程中又出现了重复的代码的问题,想想看改怎么解决?
答:while循环嵌套
while 嵌套代码示例
1 | while 条件1: |
注意:
- while循环嵌套运行时的特点:每次外层循环执行1次,内层循环执行全部
- while循环嵌套可以无限次的嵌套,但一般情况下不超过3层while循环嵌套
- 当外层while条件不满足时表示整个while循环嵌套结束
while 嵌套实际应用
示例一:
要求:打印如下图形
1 | * |
参考代码:
1 | i = 1 # 控制行数 |
示例二:
要求:打印如下图形
1 | 1*1=1 |
参考代码:
1 | i = 1 |
3.4 for 循环
引入
像while循环一样,for可以完成循环的功能
for循环可以遍历任何序列的项目,如一个列表或者一个字符串等
注意:
for循环使用最多的场景是直接遍历可以迭代的对象,而什么是迭代,什么是对象我们还没有学习,因此本节课程只讲解简单的使用for。更为复杂的用法在后面讲解
for 循环代码格式
1 | for 临时变量 in 列表或者字符串等可迭代对象: |
for 循环代码示例
如果想要循环输出0、1、2、3、4,使用for循环来实现的代码如下:
1 | for i in range(5): |
运行结果:
1 | 0 |
range 内置函数的简单使用
range()的功能很强大,此时我们只需要知道它可以配合for实现循环即可,其他的功能在后面的课程中学习
range(x)当range中只有1个数字时,for循环取到的数据是0….x-1
例如:
1
2for i in range(5):
print(i)能输出:
1
2
3
4
50
1
2
3
4但不能输出5
range(x, y)当range中有2个数字时,此时for循环取到的数据是x….y-1
例如:
1
2for i in range(3, 5):
print(i)能输出:
1
23
4range(x, y, z)当range中有3个数字时,此时for循环能取到的数据是从x…y-1但是每次间隔的数据是z
示例一:
1
2for i in range(1, 5, 1):
print(i)运行结果:
1
2
3
41
2
3
4示例二:
1
2for i in range(1, 5, 2):
print(i)运行结果:
1
21
3示例三:
1
2for i in range(5, 1, -1):
print(i)运行结果:
1
2
3
45
4
3
2
for 循环案例
1 | sum_ret = 0 # 用来存储总和 |
运行结果如下:
1 | 1~100的和为:5050 |
3.5 break 与 continue
引入
在循环的过程中,有时可能会因为某些条件的满足或者不满足需要结束整个while,还有可能在当次循环代码执行过程中剩下的不执行了而是进行一次的循环,这种时候就需要用2个功能
- 结束整个循环
- 结束本次循环
还好,Python的发明人,针对上述2个功能,发明了对应的代码
break,用来结束整个循环continue,用来结束本次循环
break 基本使用
break的作用是:结束它所属的整个循环
注意点:它不能单独使用,如果用的话一定需要放到循环中
while 中使用 break
未使用 break 的效果
1
2
3
4
5
6i = 0
while i<5:
print('----')
print(i)
i = i + 1运行结果:
1
2
3
4
5
6
7
8
9
10----
0
----
1
----
2
----
3
----
4使用 break 的效果
1
2
3
4
5
6
7i = 0
while i<5:
print('----')
i = i+1
break
print(i)运行结果:
1
----
说明:
- 当程序执行到第6行时,遇到了
break,那么此时break就会将它所在的while循环结束,所以只输出了一次----
- 当程序执行到第6行时,遇到了
for 循环中使用 break
未使用 break 的效果
1
2
3
4web_site = 'www.dgut.edu.cn'
for x in web_site:
print(x)运行结果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15w
w
w
.
d
g
u
t
.
e
d
u
.
c
n使用 break 的效果
1
2
3
4
5web_site = 'www.dgut.edu.cn'
for x in web_site:
print(x)
break运行结果:
1
w
说明:
- 当程序执行到第5行
break时,break会让整个for循环结束,所以只输出了第一个字母w
- 当程序执行到第5行
continue 的基本使用
while 中使用 continue
使用 continue 的效果
1
2
3
4
5
6i = 0
while i < 3:
i = i+1
print('----')
continue
print(i)运行结果:
1
2
3----
----
----
for 中使用continue
带有 continue 的循环示例如下:
1
2
3
4
5
6
7web_site = 'www.dgut.edu.cn'
for x in web_site:
print(x)
continue
print("----")
运行结果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15w
w
w
.
d
g
u
t
.
e
d
u
.
c
n说明:
- 当程序遇到
continue时,会导致本次for循环体中剩下的代码不会执行,而是进入下一次的循环
- 当程序遇到
常见的用法
通过上面的案例,我们知道break、continue是可以直接放到循环中使用的
但是,在循环中直接运行break、continue有意义吗?其实你也会感觉到有些不舒服,我们一般的用法是在判断语句中使用break、continue
示例如下:
1 | i = 3 |
说明:
- 如果密码输入正确,那么就不需要再次让用户输入密码,直接结束这个循环即可
- 一般情况下break、continue会在判断中使用,这样就能够实现该怎样循环的就怎样循环,不该循环的时候能立刻结束
在循环嵌套中使用
阅读如下代码,思考最终会输出什么?
1 | i = 0 |
最终输出结果为:
1 | i=0 |
看到上述输出结果,我们发现:break作用在当前的循环体,并不会影响到外层循环!
continue在循环嵌套中的作用于break几乎一样,只不过它是结束本次循环,而break是结束整个循环
切记口诀:break、continue在哪个循环中就对哪个循环起作用
break 与 continue 使用总结
break、continue只能用在循环中,除此以外不能单独使用break、continue在嵌套循环中,只对最近的一层循环起作用break能够立刻结束所在的循环continue的用来结束本次循环,紧接着执行下一次的循环- 无论
break放到while循环体中的任何位置,只要被执行一次,那么整个循环立刻结束
3.6 循环中的 else
引入
看如下代码,想一想:怎样实现 “密码不正确的相应提示”
1 | i = 3 |
想要实现在 “密码不正确” 时提示相应的信息,普通的做法是:
1 | login_flag = False # 定义一个变量,用来存储是否登录成功,True表示成功,False表示不成功 |
上述的代码整体逻辑是:
- 循环中获取密码判断是否正确,通过一个变量来标记正确与否
- 当循环结束后,在单独判断标记,然后输出对应的信息
问题:有么有简单的方式呢?
答:else
while…else… 的使用方式
格式:
1 | while 条件: |
说明:
- 只要while循环体中没有执行break,那么当while循环体中所有的代码执行完后,else中的代码也会执行
- 如果while循环中有break那么表示整个while结束,else中的代码也不会被执行
示例:
有 break 时:
1
2
3
4
5
6
7
8
9i = 1
while i <= 3:
print("这是一段测试信息...")
if i == 1:
print("调用了break")
break
i += 1
else:
print("我是else中的代码")运行结果:
1
2这是一段测试信息...
调用了break没有 break 时
1
2
3
4
5
6i = 1
while i <= 3:
print("这是一段测试信息...")
i += 1
else:
print("我是else中的代码")运行结果:
1
2
3
4这是一段测试信息...
这是一段测试信息...
这是一段测试信息...
我是else中的代码
代码案例
1 | i = 3 |
for…else… 的使用方式
格式:
1 | for 变量 in 可迭代对对象: |
示例:
未使用 break
1
2
3
4for i in range(5):
print("i=%d" % i)
else:
print("我是else中的代码...")运行结果:
1
2
3
4
5
6i=0
i=1
i=2
i=3
i=4
我是else中的代码....使用 break
1
2
3
4
5
6
7for i in range(5):
print("i=%d" % i)
if i == 1:
print("我是break哦...")
break
else:
print("我是else中的代码...")运行结果:
1
2
3i=0
i=1
我是break哦...
代码案例
1 | for i in range(3, 0, -1): |
验证 continue
我们知道continue的作用是结束本次循环,那么既然break在for...else...和while...else...中都起作用,那么continue呢?
接下来我们就验证一下。
验证一:
1 | i = 0 |
运行结果:
1 | 来了老弟... |
验证二:
1 | for i in range(3): |
运行结果:
1 | 来了老弟... |
结论:
- 在
while...else...与for...else...中,break会让else中的代码不执行,而continue没有这个功能
- 标题: 3.Python循环语句
- 作者: Jinshuo Jiang
- 创建于 : 2025-09-30 21:34:12
- 更新于 : 2025-09-30 21:37:00
- 链接: https://redefine.ohevan.com/2025/09/30/Python loop statements/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。