文章目录引言为什么需要循环一、for循环1. for循环的基本语法2. range()函数3. for循环的应用示例1计算1到100的和示例2遍历字符串示例3打印九九乘法表示例4遍历字典4. enumerate()函数二、while循环1. while循环的基本语法2. while循环的应用示例1用户输入验证示例2猜数字游戏示例3计算阶乘示例4斐波那契数列3. while循环与for循环的选择三、break和continue1. break跳出循环break的实际应用2. continue跳过当前迭代continue的实际应用3. break和continue的区别4. 循环的else子句else子句的实际应用四、嵌套循环1. 嵌套循环的概念2. 嵌套循环的应用示例1打印图形示例2遍历二维列表示例3冒泡排序五、实战练习练习1打印图案练习2找出所有素数练习3猜数字游戏带提示练习4统计字符六、常见问题与排错问题1死循环问题2break和continue混淆问题3嵌套循环变量名冲突七、本篇小结下期预告✍创作者全栈弄潮儿 个人主页全栈弄潮儿的个人主页️ 个人社区欢迎你的加入全栈开发社区 专栏Python实战教程从零基础到AI Agent开发引言为什么需要循环在前面的课程中我们编写的程序都是按顺序执行的。但有时候我们需要重复执行某些操作。比如打印1到100的所有数字计算123…100的和遍历一个列表中的所有元素如果没有循环我们需要写100行代码来打印1到100。有了循环只需要几行代码就能搞定。循环是编程中最重要的概念之一掌握了循环你的程序就能处理大量重复性的工作。一、for循环1. for循环的基本语法for循环用于遍历一个序列如列表、字符串、范围等对序列中的每个元素执行相同的操作。# 基本语法# for 变量 in 序列:# 执行代码# 遍历列表fruits[苹果,香蕉,橙子]forfruitinfruits:print(fruit)输出苹果 香蕉 橙子2. range()函数range()函数用于生成一个数字序列常与for循环配合使用。# range(stop) - 生成0到stop-1的序列foriinrange(5):print(i)# 输出0 1 2 3 4# range(start, stop) - 生成start到stop-1的序列foriinrange(1,6):print(i)# 输出1 2 3 4 5# range(start, stop, step) - 生成start到stop-1的序列步长为stepforiinrange(0,10,2):print(i)# 输出0 2 4 6 8# 倒序foriinrange(5,0,-1):print(i)# 输出5 4 3 2 1提示range() 生成的序列不包含stop值是左闭右开的区间。3. for循环的应用示例1计算1到100的和total0foriinrange(1,101):totaliprint(f1到100的和是{total})# 输出5050示例2遍历字符串textPythonforcharintext:print(char)输出P y t h o n示例3打印九九乘法表foriinrange(1,10):forjinrange(1,i1):print(f{j}×{i}{i*j},end\t)print()# 换行输出1×11 1×22 2×22 1×33 2×36 3×33 1×44 2×48 3×412 4×44 ...示例4遍历字典student{name:小明,age:20,score:95}# 遍历键forkeyinstudent:print(key)# 遍历值forvalueinstudent.values():print(value)# 遍历键值对forkey,valueinstudent.items():print(f{key}:{value})4. enumerate()函数enumerate()函数用于在遍历时同时获取索引和值。fruits[苹果,香蕉,橙子]# 不使用enumerateforiinrange(len(fruits)):print(f{i}:{fruits[i]})# 使用enumerate推荐fori,fruitinenumerate(fruits):print(f{i}:{fruit})输出0: 苹果 1: 香蕉 2: 橙子提示enumerate() 可以指定起始索引enumerate(fruits, start1)二、while循环1. while循环的基本语法while循环在条件为True时重复执行代码块直到条件变为False。# 基本语法# while 条件:# 执行代码# 示例打印1到5i1whilei5:print(i)i1# 别忘了更新变量否则会死循环输出1 2 3 4 5⚠️警告while循环一定要确保条件最终会变为False否则会陷入死循环2. while循环的应用示例1用户输入验证passwordwhilepassword!123456:passwordinput(请输入密码)print(密码正确欢迎)示例2猜数字游戏importrandom# 生成随机数answerrandom.randint(1,100)guess0attempts0print(我想了一个1到100之间的数字猜猜看)whileguess!answer:guessint(input(你的猜测))attempts1ifguessanswer:print(太小了)elifguessanswer:print(太大了)else:print(f恭喜你猜对了你一共猜了{attempts}次。)示例3计算阶乘nint(input(请输入一个正整数))result1i1whilein:result*i i1print(f{n}! {result})示例4斐波那契数列# 打印前20个斐波那契数a,b0,1count0whilecount20:print(a,end )a,bb,ab count1输出0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 41813. while循环与for循环的选择场景推荐循环遍历序列列表、字符串等for循环已知循环次数for循环条件判断不知道循环次数while循环需要等待某个条件满足while循环# for循环已知次数foriinrange(5):print(i)# while循环条件判断whileuser_input!quit:user_inputinput(输入quit退出)三、break和continue1. break跳出循环break用于立即跳出当前循环不再执行剩余的循环。# 找到第一个偶数就停止foriinrange(1,10):ifi%20:print(f找到第一个偶数{i})breakprint(i)输出1 找到第一个偶数2break的实际应用# 用户登录验证max_attempts3attempts0whileattemptsmax_attempts:passwordinput(请输入密码)ifpassword123456:print(登录成功)breakelse:attempts1print(f密码错误还剩{max_attempts-attempts}次机会)else:print(登录失败账户已锁定)2. continue跳过当前迭代continue用于跳过当前迭代直接进入下一次循环。# 只打印奇数foriinrange(1,10):ifi%20:continue# 跳过偶数print(i)输出1 3 5 7 9continue的实际应用# 处理数据时跳过无效值data[10,-5,20,-3,30,-8,40]print(正数列表)fornumindata:ifnum0:continue# 跳过负数print(num)输出正数列表 10 20 30 403. break和continue的区别# break完全跳出循环print(使用break)foriinrange(1,6):ifi3:breakprint(i)# 输出1 2# continue跳过当前迭代继续下一次print(\n使用continue)foriinrange(1,6):ifi3:continueprint(i)# 输出1 2 4 54. 循环的else子句Python的循环可以有一个else子句当循环正常结束没有被break打断时执行。# for循环的elseforiinrange(1,6):print(i)else:print(循环正常结束)# while循环的elsei1whilei5:print(i)i1else:print(循环正常结束)else子句的实际应用# 查找素数num17foriinrange(2,num):ifnum%i0:print(f{num}不是素数可以被{i}整除)breakelse:# 循环正常结束说明没有找到因子print(f{num}是素数)提示else子句只在循环没有被break打断时执行。四、嵌套循环1. 嵌套循环的概念循环可以嵌套使用即在一个循环内部再包含另一个循环。# 外层循环执行一次内层循环执行完整的一轮foriinrange(3):forjinrange(2):print(fi{i}, j{j})输出i0, j0 i0, j1 i1, j0 i1, j1 i2, j0 i2, j12. 嵌套循环的应用示例1打印图形# 打印直角三角形foriinrange(1,6):forjinrange(i):print(*,end )print()输出* * * * * * * * * * * * * * *示例2遍历二维列表matrix[[1,2,3],[4,5,6],[7,8,9]]# 遍历二维列表forrowinmatrix:foriteminrow:print(item,end )print()输出1 2 3 4 5 6 7 8 9示例3冒泡排序# 冒泡排序算法numbers[64,34,25,12,22,11,90]nlen(numbers)foriinrange(n):forjinrange(0,n-i-1):ifnumbers[j]numbers[j1]:# 交换元素numbers[j],numbers[j1]numbers[j1],numbers[j]print(排序后的数组)fornuminnumbers:print(num,end )输出排序后的数组 11 12 22 25 34 64 90五、实战练习练习1打印图案# 打印菱形n5# 上半部分包括中间行foriinrange(1,n1):print( *(n-i)* *i)# 下半部分foriinrange(n-1,0,-1):print( *(n-i)* *i)练习2找出所有素数# 找出1到100之间的所有素数primes[]fornuminrange(2,101):foriinrange(2,int(num**0.5)1):ifnum%i0:breakelse:primes.append(num)print(f1到100之间的素数有{len(primes)}个)print(primes)练习3猜数字游戏带提示importrandom answerrandom.randint(1,100)attempts0max_attempts7print(我想了一个1到100之间的数字你有7次机会)whileattemptsmax_attempts:guessint(input(f第{attempts1}次猜测))attempts1ifguessanswer:print(f恭喜你猜对了你一共猜了{attempts}次。)breakelifguessanswer:print(太小了)else:print(太大了)else:print(f很遗憾机会用完了。正确答案是{answer}。)练习4统计字符# 统计字符串中各类字符的数量textinput(请输入一段文字)letters0digits0spaces0others0forcharintext:ifchar.isalpha():letters1elifchar.isdigit():digits1elifchar.isspace():spaces1else:others1print(f\n统计结果)print(f字母{letters}个)print(f数字{digits}个)print(f空格{spaces}个)print(f其他{others}个)六、常见问题与排错问题1死循环原因while循环的条件永远为True解决方法确保循环条件最终会变为False# ❌ 错误死循环i1whilei5:print(i)# 忘记更新i# ✅ 正确i1whilei5:print(i)i1# 更新变量问题2break和continue混淆原因不理解break和continue的区别解决方法break完全跳出循环continue跳过当前迭代继续下一次# break找到就停止foriinrange(1,10):ifi5:breakprint(i)# 输出1 2 3 4# continue跳过5foriinrange(1,10):ifi5:continueprint(i)# 输出1 2 3 4 6 7 8 9问题3嵌套循环变量名冲突原因内外层循环使用相同的变量名解决方法使用不同的变量名# ❌ 错误foriinrange(3):foriinrange(2):# 变量名冲突print(i)# ✅ 正确foriinrange(3):forjinrange(2):# 使用不同的变量名print(fi{i}, j{j})七、本篇小结今天我们完成了以下学习内容for循环遍历序列配合range()使用while循环条件判断适合不知道循环次数的场景break跳出整个循环continue跳过当前迭代继续下一次循环的else子句循环正常结束时执行嵌套循环循环内部再包含循环请记住这三个结论for适合遍历已知序列或次数时使用for循环while适合条件不知道循环次数只知道结束条件时使用while循环break和continue控制流程break跳出循环continue跳过当前迭代下期预告在第6期中我们将学习Python的列表和元组包括列表的创建和基本操作列表的常用方法列表切片元组的概念和使用敬请期待✍坚持原创求关注点赞收藏
阅读完成 · 觉得有帮助?