PS:写在最前
今天的PS 写在最前,主要是贴心提醒各位编程大佬请直接划走!这篇只写给自学Python、屡屡被while循环坑拿捏的小白。
大神看循环是简单逻辑,我们小白看循环是「玄学轮回」:跟着教程敲稳如老狗,独立写代码寸步难行。
今天专门复盘我踩遍的while循环坑(不好意思暴露更深滴坑),全是血泪经验,帮同类自学党少走弯路!
——正文开始
一、我的头号大坑:无脑写出无限死循环
题目1:打印我是大美女5次(这里说大实话了)
❌ 踩坑现场:为什么代码一跑就卡死?
初始化计数器i = 0,循环条件i < 5,是的他没有错,但是如果对i没有约束
那么数器永远停在0,0永远小于5,循环条件永久成立,程序无限运行,这就是典型的「死循环」。
我们把循环规则换成生活场景:
规矩:只要吃糖次数没到5次,就可以一直吃糖、一直输出「我是大美女」。
漏洞:每次吃完糖,从来不记录吃糖次数,永远默认自己只吃了0次。
结果:永远满足「没吃到5次」的条件,就会一直吃糖、一直循环,停不下来!
✅ 正确修复逻辑
循环的核心:每执行一次循环内容,必须更新计数器!
每打印一次「我是大美女」,就让计数器i = i + 1(简写i += 1):
第一轮执行→ i变为1
第二轮执行→ i变为2
……
直到i=10时,不满足 i < 10的条件,循环自动终止。
二、以上代码修复完成,还没从坑里爬出来,又掉入一个隐形大坑:代码能跑但数字全乱(顺序坑)
当我觉得代码修好了,但打印的次数、序号对不上,问题全在两行代码的执行顺序!我们以「标注循环次数」为例,对比两种写法的区别。
1. 先打印,后更新计数器
执行逻辑:先输出当前次数,再让计数器+1
特点:打印的是当前循环的真实次数,贴合我们的认知,是最常用、最标准的写法。
示例逻辑:
i=0 → 打印第1次内容 → i+1=1
i=1 → 打印第2次内容 → i+1=2
2. 先更新计数器,后打印内容
执行逻辑:先让计数器+1,再输出内容
特点:打印的数字会提前跳数,初始值会被跳过,容易出现次数对不上的问题,非特殊需求不推荐使用。
总结性发言
二、新手致命坑:一个缩进毁掉整个循环
题目2:请打印1-10所有数字
❌ 我的翻车实录
设定规则:i ≤ 就持续循环
致命错误:i += 1没有缩进,放在了while循环外面
��糖果场景复盘
小牌子初始数字是0,规则是:牌子数字没超过10,就继续吃糖。
但「更新小牌子数字」的动作,不在循环规则里:程序只会反复执行「吃糖、打印内容」,永远不会更新牌子数字,i永远等于0,永久满足循环条件,直接卡死程序。
✅ 正确规则
所有需要重复执行的代码(打印、计数器更新),必须统一缩进在while循环内部,缺一不可!
四、细节坑:结尾打印语句放哪里,差别超大
这是考试、实操高频考点,一句话分清区别:
1. print("循环结束") 写在while循环内部(缩进)
效果:每一次循环执行完,都会打印一次「循环结束」
场景:每次循环任务完成后,需要单独提示收尾时使用。
2. print("循环结束") 写在while循环外部(不缩进)
效果:等待所有循环全部执行完毕,只打印一次「循环结束」
场景:最常用!用于整体任务收尾,提示用户所有循环流程已完成。
五、实战踩坑:1-100累加常见翻车点
用while循环计算1-100总和,新手最容易踩2个坑:
第一次翻车:
1. 计数器初始值错误:初始i=0会导致多算/少算,计算1-100需初始i=1;
2. 忘记更新计数器:直接触发死循环,无法完成累加;
3. 缩进混乱:累加公式、计数器更新必须全部缩进在循环内。
计算0-5 总和的代码正确的写法思维
第一步:写出0-5所有数字
第二步(2种方法)问题来了为啥两种方法都可以
· 第一份代码:i=1,累加 1+2+3+4+5 = 15
· 第二份代码:i=0,累加 0+1+2+3+4+5 = 15
课后习题(学习方法就是学完把笔记发人工智能,让他出题)
题目1
使用while 循环,打印输出:1 2 3 4 5
题目2
用while 循环,计算 0~10 的总和,最后只输出一次最终结果