本文为「30天吃透Python核心语法」系列第七篇,承接Day6的if条件语句内容,全程纯文字讲解、新手友好、无晦涩术语,每一个知识点都配可直接运行的代码示例,跟着练就能写出会重复执行、批量处理任务的实用代码。
大家好,欢迎来到30天Python精通计划的第七天。
Day6我们一起搞定了if条件语句,让程序拥有了“思考和选择的能力”,能根据不同条件走不同的逻辑分支,很多同学都在评论区完成了打卡,特别棒!
但这段时间我也收到了很多新手同学的留言:
- 我要打印100遍“好好学习Python”,难道要复制粘贴100次print语句吗?
- 我想计算1到100的累加和,总不能一个个数字手动加吧?
- 我想做一个猜数字游戏,用户猜不对就一直猜,猜对了才结束,这该怎么实现?
- 我想给用户3次输密码的机会,输错就锁定,不用写3遍重复的判断代码吧?
别慌,这些问题的答案,全在今天的内容里。
今天我们要学的while循环语句,就是专门解决「重复执行代码」这个核心需求的。如果说前六天的学习,让你的程序能做计算、会做判断,那今天学完循环,你的程序就真正能帮你“干活”了——所有重复、繁琐、机械的操作,都能交给循环一键搞定,彻底解放你的双手。
学完今天的内容,你将:
✅ 彻底搞懂while循环的核心逻辑,理解循环的完整执行流程
✅ 掌握while循环的基础语法,写出可稳定重复执行的代码
✅ 吃透循环三要素,从根源上避开新手最容易踩的死循环坑
✅ 学会break和continue两个关键字,灵活掌控循环的启停与跳转
✅ 掌握while循环3个经典实战场景,写出能解决实际问题的小脚本
✅ 为后续for循环、批量数据处理、办公自动化打下坚实地基
一、先搞懂:while循环的本质是什么?
用一句大白话讲,while循环的本质,就是我们日常说话的「只要...就一直...」逻辑:
只要满足某个条件,就一直重复执行同一段代码;直到条件不满足了,就停止重复,跳出循环,继续执行后面的代码。
它的核心价值,就是用几行代码,实现无数次的重复操作,彻底告别复制粘贴的机械劳动。
我们用一个最直观的例子对比,你就能瞬间明白它的用处:
没有循环的时候,你要打印5遍“好好学习Python”,只能这么写:
python
# 没有循环,重复写5遍代码,要打印100遍就得写100行
print("好好学习Python")
print("好好学习Python")
print("好好学习Python")
print("好好学习Python")
print("好好学习Python")
有了while循环之后,代码就变成了这样:
python
# 用while循环,3行代码就能实现无数次重复
i = 1
while i <= 5:
print("好好学习Python")
i += 1
哪怕你要打印100遍、1000遍,只需要把条件里的5改成100、1000就行,代码行数完全不变,效率直接拉满。
二、while循环的基础语法与执行流程
while循环的语法和我们Day6学的if语句高度相似,新手可以直接联动记忆,唯一的区别是:if的条件满足,代码只执行1次;while的条件满足,代码会一直重复执行,直到条件不满足为止。
1. 基础语法规则
while循环的语法结构非常固定,新手必须严格遵守,少一个符号、错一个缩进都会报错:
1. 第一行必须顶格写关键字 while ,后面跟循环条件(就是Day5学的,结果一定是True或False的表达式),行尾必须加英文冒号;
2. 第二行开始,必须缩进4个空格(或1个Tab键),所有缩进的代码统称为「循环体」,也就是要重复执行的内容;
3. 循环体执行完成后,会自动回到while开头,重新判断循环条件,开启下一轮循环。
2. 完整执行流程(新手必记!)
很多新手写循环逻辑混乱,核心是没搞懂循环的执行顺序,我把它拆解成4步,哪怕是零基础也能一眼看懂:
1. 初始判断:程序运行到while语句时,先计算循环条件的结果,判断是True还是False;
2. 条件为True:执行缩进里的循环体代码,一行一行全部执行完;
3. 循环校验:循环体执行完毕后,自动跳回while开头,重新计算循环条件的结果,再次判断;
4. 条件为False:直接跳过整个循环体,跳出循环,执行循环后面的非缩进代码。
简单总结:条件满足,就循环执行;条件不满足,就立刻结束循环。
3. 最简实操示例
我们用“打印1到5的数字”这个场景,带你完整走一遍循环流程,代码可以直接复制到PyCharm里运行:
python
# 1. 定义循环变量初始值
i = 1
# 2. 循环条件:只要i小于等于5,就一直执行循环体
while i <= 5:
# 3. 循环体:要重复执行的代码
print(f"当前数字是:{i}")
# 4. 循环变量更新:每次循环i加1,这是避免死循环的关键
i += 1
# 循环结束后执行的代码
print("循环执行完毕")
我们一步步拆解它的执行过程:
- 初始i=1,判断1<=5为True,执行print打印1,i变成2;
- 回到while开头,判断2<=5为True,执行print打印2,i变成3;
- 重复这个过程,直到i变成6,判断6<=5为False,跳出循环,执行最后的print语句。
三、循环三要素:从根源上避开死循环,新手必背
很多新手写while循环,一运行就停不下来,电脑直接卡死,核心原因就是没凑齐循环三要素。
写一个能正常运行、不会出错的while循环,必须同时具备以下三个要素,缺一不可,新手一定要刻在脑子里:
1. 循环变量的初始值
循环变量就是我们用来控制循环次数、判断循环条件的变量,通常用 i 、 j 、 count 等命名,必须在while循环开始之前,先定义并赋初始值。
比如上面示例里的 i = 1 ,就是循环变量的初始值,没有这个初始值,while的条件就无法判断,会直接报变量未定义的错误。
2. 循环终止条件
就是while后面跟的条件表达式,它必须有一个能变成False的可能性,否则循环会永远执行下去,变成死循环。
比如上面示例里的 i <= 5 ,当i增加到6的时候,条件就会变成False,循环就有了终止的出口。
3. 循环变量的更新
这是三要素里最关键、新手最容易漏掉的一步。必须在循环体内部,更新循环变量的值,让它朝着“循环条件变成False”的方向变化。
比如上面示例里的 i += 1 ,每次循环都让i加1,i才会从1慢慢变成6,最终让条件不成立,终止循环。如果漏掉了这一行,i永远是1,条件永远是True,循环就永远不会停止。
四、循环控制关键字:break和continue,灵活掌控循环
学会了基础的while循环,我们只能控制“条件满足就循环,不满足就结束”,但实际场景里,我们经常需要更灵活的控制:比如循环过程中遇到特定情况,直接提前结束循环;或者遇到特定情况,跳过这一次循环,直接进入下一轮。
这就需要用到两个专门的循环控制关键字: break 和 continue ,下面我们逐个拆解清楚。
1. break:立刻终止整个循环
break 的核心作用,就是立刻、彻底终止当前的整个while循环,哪怕循环条件还是True,只要执行到break,就会直接跳出循环,执行循环后面的代码,不会再进行下一轮循环。
它通常和if条件语句配合使用:在循环体里判断,如果满足某个特定条件,就执行break,提前结束循环。
我们用一个示例就能看懂:
python
# 循环打印1到10,遇到数字5就立刻终止循环
i = 1
while i <= 10:
# 如果i等于5,就执行break,终止整个循环
if i == 5:
print("遇到5了,循环终止")
break
print(f"当前数字是:{i}")
# 循环变量更新
i += 1
print("循环结束")
运行这段代码你会发现,程序只会打印1到4,当i变成5的时候,会触发if条件,执行break,直接跳出整个循环,不会再打印5到10,也不会继续循环了。
2. continue:跳过本次循环,进入下一轮
continue 的核心作用,和break完全不同:它不会终止整个循环,只会跳过当前这一轮循环里,continue后面的所有代码,直接跳回while开头,重新判断条件,进入下一轮循环。
简单说就是:break是“彻底不干了,循环结束”,continue是“这次的活不干了,直接开始下一次”。
它同样和if条件语句配合使用,用来跳过不需要执行的场景。
我们用同一个场景做示例,对比break的区别:
python
# 循环打印1到10,遇到数字5就跳过,不打印,其他数字正常输出
i = 1
while i <= 10:
# 循环变量更新,必须放在continue前面,否则会触发死循环!
i += 1
# 如果i等于5,就执行continue,跳过后面的print,直接进入下一轮循环
if i == 5:
print("跳过数字5,不打印")
continue
print(f"当前数字是:{i}")
print("循环结束")
运行这段代码你会发现,程序会打印1到10的所有数字,唯独跳过了5,循环没有终止,一直执行到i=10,条件不满足才结束。
【新手避坑红线】使用continue的时候,必须把循环变量的更新代码,放在continue的前面。如果像之前一样把i +=1放在continue后面,当触发continue的时候,i的更新代码会被跳过,i永远不会变化,循环条件永远是True,直接变成死循环,这是新手用continue时100%会踩的坑。
五、while循环的头号杀手:死循环,新手必看避坑指南
死循环是while循环里最常见、也最让新手头疼的问题,很多同学一运行死循环,就慌得不知道怎么办。今天我们就彻底讲透死循环,让你知道它是什么、为什么会出现、怎么规避、遇到了怎么处理。
1. 什么是死循环?
死循环,就是循环条件永远为True,循环永远不会终止,会一直执行循环体里的代码,直到程序崩溃、电脑卡死,或者你手动终止程序。
2. 新手最容易写出死循环的3个原因
1. 漏掉了循环变量的更新
这是最常见的原因,比如写循环的时候,忘了在循环体里写 i +=1 ,循环变量永远是初始值,循环条件永远为True。
错误示例:
python
# 死循环!永远不会停止
i = 1
while i <= 5:
print(i)
# 漏掉了i +=1,i永远是1,条件永远是True
2. 循环条件永远为True,没有退出出口
很多同学会写 while True: 这种无限循环的格式,但是循环体里没有加if条件+break作为退出出口,程序就会永远循环下去。
错误示例:
python
# 死循环!没有退出出口
while True:
print("我会一直打印")
# 没有加break,永远不会停止
这里要补充一句: while True: 不是错误写法,反而在实际开发中非常常用,只要你在循环体里设置了合理的if条件+break作为退出出口,就是完全正确的写法,后面的实战案例里我们会用到。
3. 循环变量更新错误,朝着条件永远成立的方向变化
比如应该让循环变量加1,结果写成了减1,i从1开始,越变越小,永远满足 i <=5 的条件,变成死循环。
错误示例:
python
# 死循环!循环变量更新错误
i = 1
while i <= 5:
print(i)
i -= 1 # i越变越小,永远满足i<=5
3. 遇到死循环怎么办?
新手遇到死循环不要慌,在PyCharm里,只需要点击下方控制台里的红色正方形停止按钮,就能立刻强制终止程序运行,不会对电脑造成任何伤害。
4. 怎么从根源上规避死循环?
1. 写循环之前,先把循环三要素写全,尤其是循环变量的更新;
2. 写 while True: 的时候,必须先想好退出条件,在循环体里加上if+break;
3. 不确定循环是否正常的时候,先在循环体里加print打印循环变量,看看它的变化是否符合预期,没问题再写完整的循环体。
六、while循环经典实战案例,学了就能用
光懂语法没用,能解决实际问题才是关键。下面我们用3个最经典、最实用的场景,带你把while循环的知识点融会贯通,代码可以直接复制运行,也可以自己修改参数练手。
案例1:经典计算——1到100的累加和
这是学循环必做的经典案例,核心是用循环实现累加,后续做数据统计、求和计算都能用到。
需求:计算1+2+3+...+100的总和,用while循环实现。
python
# 循环三要素1:定义循环变量和累加变量
i = 1
sum_total = 0 # 用来存储累加的总和,初始值为0
# 循环三要素2:循环终止条件
while i <= 100:
# 循环体:把当前的i加到总和里
sum_total += i
# 循环三要素3:更新循环变量
i += 1
# 循环结束后,打印最终的总和
print(f"1到100的累加和是:{sum_total}")
案例2:趣味实战——猜数字小游戏
这个案例完美结合了while循环+if条件判断,还有break关键字,有趣又实用,能帮你彻底吃透循环的逻辑。
需求:程序随机生成一个1-100之间的数字,用户反复猜数字,程序提示“猜大了”或“猜小了”,直到用户猜对了,就恭喜用户并结束游戏。
python
# 导入随机数模块,生成1-100之间的随机数字
import random
target_num = random.randint(1, 100)
print("欢迎来到猜数字小游戏!")
print("我已经生成了一个1-100之间的数字,快来猜猜看吧!")
# 用while True做无限循环,猜对了就用break退出
while True:
# 获取用户输入的数字,转成整数类型
user_guess = int(input("请输入你猜的数字:"))
# 用if条件判断用户猜的结果
if user_guess > target_num:
print("猜大了!再往小了试试")
elif user_guess < target_num:
print("猜小了!再往大了试试")
else:
print(f"恭喜你!猜对了!正确数字就是{target_num}")
# 猜对了,执行break,终止循环
break
案例3:实用场景——用户密码重试锁定机制
这个案例是我们日常上网随处可见的场景,结合了之前学的账号密码判断,用while循环控制重试次数,非常贴合实际开发。
需求:用户有3次输入密码的机会,输入正确就打印“登录成功”并结束程序;输入错误就提示剩余次数;3次全部输错,就打印“密码错误次数过多,账号已锁定”并结束。
python
# 设定正确的密码
correct_password = "123456"
# 循环三要素1:定义重试次数变量,初始值为3
try_count = 3
# 循环三要素2:循环条件,还有重试次数就继续循环
while try_count > 0:
# 每次循环,先扣除1次重试机会
try_count -= 1
# 获取用户输入的密码
user_input = input("请输入你的密码:")
# 判断密码是否正确
if user_input == correct_password:
print("密码正确,登录成功!欢迎回来")
# 登录成功,直接break终止循环
break
else:
# 密码错误,判断还有没有剩余次数
if try_count > 0:
print(f"密码错误!你还有{try_count}次输入机会")
else:
print("密码错误次数过多,你的账号已被锁定")
七、新手高频踩坑避坑指南
这里整理了Day7学while循环时,新手100%会遇到的报错和逻辑问题,提前讲清原因和解决方法,帮你少走弯路。
1. 缩进错误:IndentationError
和if语句一样,循环体的代码必须缩进4个空格,同一层级的代码缩进必须完全一致,否则要么直接报错,要么循环逻辑完全混乱。解决方法:严格遵守缩进规则,循环体里的所有代码统一缩进4个空格,循环外的代码顶格写。
2. 死循环
这个前面重点讲过,核心原因就是循环三要素不全、循环变量更新错误、while True没有加break退出出口。解决方法:写循环先凑齐三要素,循环变量更新放在循环体最前面,用continue的时候格外注意不要跳过变量更新。
3. 循环条件边界写错,多执行一次或少执行一次
比如要计算1到100的和,把循环条件写成 i < 100 ,就会漏掉100,结果少加了100。解决方法:写循环条件的时候,想清楚边界值,比如要包含100,就必须写 i <= 100 ,不确定的话,先打印循环变量看看范围是否正确。
4. break和continue用混,逻辑不符合预期
很多新手想跳过一次循环,结果用了break,直接把整个循环终止了。解决方法:牢牢记住两个关键字的区别,想彻底结束循环用break,想跳过当前这一次、继续下一次用continue。
5. 循环变量在循环体里被重新赋值,导致逻辑混乱
比如在循环体里重新定义了i=1,导致循环变量每次都被重置,变成死循环。解决方法:循环控制变量不要在循环体里重新赋值,只做递增/递减的更新。
6. while语句结尾忘了加英文冒号,触发语法报错
和if语句一样,while、if、elif、else的行尾,必须加英文冒号,新手很容易漏掉或者写成中文冒号。解决方法:写完条件就顺手加冒号,写完代码先检查所有标点都是英文格式。
八、今日课后作业(必做!只看不敲,永远学不会)
编程是一门实操技能,只有动手敲代码,才能真正把循环逻辑刻进脑子里。今天的作业循序渐进,全部完成,才算真正吃透while循环。
1. 基础必做:用while循环打印1到20之间的所有偶数,每个数字单独占一行。
2. 进阶练习:用while循环计算1到100之间,所有奇数的累加和,打印最终的结果。
3. 挑战练习:完善用户密码验证程序,需求:正确的用户名是admin,正确的密码是666666;用户先输入用户名,用户名错误直接提示“该用户不存在”并结束程序;用户名正确再输入密码,有3次输入密码的机会,输入正确提示登录成功,输错提示剩余次数,3次全错提示账号锁定。
4. 习惯养成:严格遵守缩进规则,给循环的三要素、核心逻辑都加上清晰的单行注释,变量名做到见名知意。
九、明日预告
Day8我们将学习Python的for循环+range函数,这是比while循环更常用、更简洁的循环方式,专门用来遍历序列、批量处理数据。
学完明天的内容,你就能轻松遍历字符串、列表等数据,实现更高效的循环操作,对比while和for循环的适用场景,在不同的需求里选择最合适的循环方式,彻底搞定Python循环的核心内容。
结尾互动
今天的while循环语句,你都学会了吗?
完成作业的同学,可以在评论区扣个【打卡Day7】!
遇到任何报错、循环逻辑搞不懂的问题,都可以在评论区留言,我会一一解答。
关注我,跟着30天计划,从零开始,彻底精通Python核心语法,每天1.5小时,30天就能独立写Python脚本,搞定日常办公自动化!