Day 11for 循环——让电脑做重复的事重复劳动是编程最擅长解决的。昨天学了条件判断今天学循环——同一段代码自动执行多次这正是计算机比人快的地方。一、为什么要用循环假设你要打印 1 到 100# 不用循环——写到天亮print(1)print(2)print(3)# ... 写到100会疯掉# 用循环——三行搞定foriinrange(1,101):print(i)循环就是让一段代码反复执行。Python 有两种循环for和while今天先学for。二、for 循环基础——遍历一个序列fruits[苹果,香蕉,橙子]forfruitinfruits:print(f我喜欢吃{fruit})# 输出# 我喜欢吃苹果# 我喜欢吃香蕉# 我喜欢吃橙子执行过程取列表第一个元素苹果赋给fruit执行循环体取第二个元素香蕉再执行一遍取第三个元素橙子再执行一遍没元素了循环结束for后面可以跟任何可迭代对象——列表、元组、字典、集合、字符串、range()……# 遍历字符串每个字符forcharinHello:print(char)# H e l l o 每行一个# 遍历字典student{name:小明,age:25}forkey,valueinstudent.items():print(f{key}:{value})# 遍历集合fornumin{1,2,3}:print(num)# 顺序不确定三、range() 函数——生成数字序列range()是 for 循环的最佳搭档用来生成一系列数字# range(stop)从0到stop-1foriinrange(5):print(i)# 0 1 2 3 4# range(start, stop)从start到stop-1foriinrange(5,10):print(i)# 5 6 7 8 9# range(start, stop, step)带步长foriinrange(0,10,2):print(i)# 0 2 4 6 8 偶数# 倒着数foriinrange(10,0,-1):print(i)# 10 9 8 7 6 5 4 3 2 1记忆口诀range和切片一样左闭右开——包含 start不包含 stop。四、循环配合列表——三大利器enumerate()——同时获取索引和值fruits[苹果,香蕉,橙子]# 不用 enumerate啰嗦foriinrange(len(fruits)):print(f{i}:{fruits[i]})# 用 enumerate优雅fori,fruitinenumerate(fruits):print(f{i}:{fruit})# enumerate() 还能设置起始编号fori,fruitinenumerate(fruits,start1):print(f{i}.{fruit})# 1. 苹果 2. 香蕉 3. 橙子zip()——同时遍历多个列表names[小明,小红,小刚]scores[85,92,78]cities[北京,上海,广州]forname,score,cityinzip(names,scores,cities):print(f{name}({city}){score}分)# 小明(北京)85分# 小红(上海)92分# 小刚(广州)78分for 列表推导式——# 传统的循环累加total0foriinrange(1,101):totaliprint(total)# 5050# 直接用 sum() 生成器totalsum(iforiinrange(1,101))print(total)# 5050五、嵌套循环——循环里面套循环# 九九乘法表foriinrange(1,10):forjinrange(1,i1):print(f{j}×{i}{i*j},end\t)print()# 换行输出1×11 1×22 2×24 1×33 2×36 3×39 ... 1×99 2×918 3×927 ... 9×981执行顺序外层循环执行1次内层循环执行完整的一轮。六、循环中的 break 和 continuebreak——直接跳出循环# 找列表里第一个偶数nums[1,3,7,8,9,10]fornuminnums:ifnum%20:print(f找到了{num})break# 找到就停后面的不看了# 输出找到了8continue——跳过当前这次继续下次# 只打印奇数跳过偶数foriinrange(1,11):ifi%20:continue# 偶数就跳过不执行后面的 printprint(i)# 1 3 5 7 9break vs continuebreak彻底不循环了跳出continue只是跳过这一次循环继续七、for…else——循环正常结束才执行这是一个 Python 独特但少为人知的语法# 查找元素没找到时执行 elsenums[1,3,5,7]target4fornuminnums:ifnumtarget:print(找到了)breakelse:# 只有当循环没有被 break 打断时才执行print(没找到)# 输出没找到八、综合练习练习1求和与计数# 求 123...100 的和total0foriinrange(1,101):totaliprint(f1到100的和{total})# 5050# 统计1-100中能被3整除的数的个数count0foriinrange(1,101):ifi%30:count1print(f1-100中能被3整除的有{count}个)# 33练习2猜数字游戏框架importrandom answerrandom.randint(1,100)guessNoneattempts0print(猜数字游戏开始1-100)whileguess!answer:guessint(input(猜一个数字))attempts1ifguessanswer:print(大了)elifguessanswer:print(小了)print(f猜对了共猜了{attempts}次)九、今日学习总结学习内容掌握情况一句话要点for 循环基础✅ 重点遍历序列中的每个元素range(start, stop, step)✅ 重点生成数字序列左闭右开enumerate()✅ 理解同时取索引和值zip()✅ 了解同时遍历多个列表嵌套循环✅ 理解外层一圈内层一轮break / continue✅ 重点跳出 / 跳过本次for…else✅ 了解没break才执行else今日踩坑记录range(5) 是 0~4 不是 1~5初学者特别容易以为 range(5) 就是 1,2,3,4,5。记住从0开始不到5。嵌套循环里的 break 只跳出内层break不会跳出外层循环。想跳出全部循环可以设一个标志变量或者用函数封装 return。空序列的 for 循环不会报错for i in []:直接跳过什么也不执行。这其实是特性不是 bug配合 for…else 很好用。十、明天学什么今天学了 for 循环明天讲另一个循环——while 循环以及 break/continue 的更多实战用法。计算机不怕累你怕累。把重复的事交给循环把思考留给自己。第11天打卡完成。明天见本系列是个人学习笔记如有错误欢迎在评论区指正交流。