尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Python语言基础:32_ while 循环 新手完全指南

Python语言基础:32_ while 循环 新手完全指南 while循环是 Python 中用于重复执行一段代码的结构。它的特点是先判断条件条件为真就执行执行完再判断直到条件为假才停止。一、基本语法while 条件: # 循环体条件为 True 时执行的代码 # 注意这里的代码必须缩进通常是 4 个空格执行流程检查条件 → True → 执行循环体 → 回到开头检查条件 ↓ False → 退出循环继续执行后面的代码二、最简单的例子示例 1打印 5 次 Hellocount 1 # 初始化计数器 while count 5: # 条件count 小于等于 5 时继续 print(Hello!) count count 1 # 计数器加 1非常重要 print(循环结束了)运行结果Hello! Hello! Hello! Hello! Hello! 循环结束了执行过程拆解轮次count 的值条件count 5执行的操作第1轮11 5 → True打印 Hellocount 变成 2第2轮22 5 → True打印 Hellocount 变成 3第3轮33 5 → True打印 Hellocount 变成 4第4轮44 5 → True打印 Hellocount 变成 5第5轮55 5 → True打印 Hellocount 变成 6第6轮66 5 → False不执行退出循环⚠️新手注意count count 1这行代码绝对不能少如果少了count 永远是 1条件永远为 True程序就会无限循环死循环。示例 2打印 1 到 10i 1 while i 10: print(i) i i 1 print(完成)运行结果1 2 3 4 5 6 7 8 9 10 完成示例 3打印 10 到 1倒着数i 10 while i 1: print(i) i i - 1 # 每次减 1 print(发射)运行结果10 9 8 7 6 5 4 3 2 1 发射三、结合 input 的实用例子示例 4用户输入密码直到正确为止password 123456 # 正确密码 user_input # 初始化 while user_input ! password: user_input input(请输入密码) if user_input ! password: print(密码错误请重试) print(密码正确欢迎进入系统)运行示例请输入密码111 密码错误请重试 请输入密码abc 密码错误请重试 请输入密码123456 密码正确欢迎进入系统示例 5简单的计算器可以重复计算while True: # 先写一个无限循环后面用 break 退出 print(\n 简易计算器 ) a float(input(请输入第一个数字)) b float(input(请输入第二个数字)) op input(请选择运算 ( - * /输入 q 退出)) if op q: print(再见) break # 退出循环 elif op : print(f结果{a b}) elif op -: print(f结果{a - b}) elif op *: print(f结果{a * b}) elif op /: if b ! 0: print(f结果{a / b}) else: print(错误不能除以零) else: print(无效的运算符)四、循环控制break和continue4.1break—— 立即退出整个循环break的意思是打破遇到它循环立刻结束不管条件是否还为真。i 1 while i 10: if i 5: print(遇到 5提前结束) break # 立即退出循环 print(i) i i 1 print(循环结束)运行结果1 2 3 4 遇到 5提前结束 循环结束 注意5 没有被打印出来因为break在print(i)之前就执行了。4.2continue—— 跳过当前轮次进入下一轮continue的意思是继续遇到它当前轮次剩下的代码不执行了直接回到 while 条件判断。i 0 while i 10: i i 1 if i 5: print(跳过 5) continue # 跳过本次循环剩下的代码 print(i)运行结果1 2 3 4 跳过 5 6 7 8 9 10⚠️新手陷阱continue之前一定要确保计数器已经更新了如果把i i 1放在continue之后遇到 continue 就跳过去了i 永远不变导致死循环错误示范死循环i 0 while i 10: if i 5: continue # 危险如果 i 还是 5下一次还是 5永远跳不出去 print(i) i i 1 # 这行永远不会执行到五、while...else子句这是一个很多新手不知道的特性while后面可以跟else。规则如果 while 循环是正常结束的不是因为 break就执行 else 里的代码。i 1 while i 5: print(i) i i 1 else: print(循环正常结束了没有被 break)运行结果1 2 3 4 5 循环正常结束了没有被 break示例用 else 判断数字是否为质数n int(input(请输入一个正整数)) i 2 while i n: if n % i 0: # 如果能被某个数整除 print(f{n} 不是质数因为它能被 {i} 整除) break i i 1 else: # 只有当循环没有被 break 时才会执行 print(f{n} 是质数)测试请输入一个正整数17 17 是质数 请输入一个正整数18 18 不是质数因为它能被 2 整除 原理如果n能被2到n-1之间的任何数整除就break跳出如果一直都没找到能整除的数循环正常结束执行else说明是质数。六、无限循环死循环如果 while 的条件永远为 True循环就永远不会停止这叫无限循环或死循环。6.1 故意写无限循环配合 breakwhile True: name input(请输入你的名字输入 quit 退出) if name quit: print(再见) break print(f你好{name})运行示例请输入你的名字输入 quit 退出张三 你好张三 请输入你的名字输入 quit 退出李四 你好李四 请输入你的名字输入 quit 退出quit 再见6.2 意外写出死循环新手常见错误# 错误示范 i 1 while i 5: print(i) # 忘了写 i i 1结果屏幕疯狂打印1永远不会停止。解决方法按Ctrl C强制终止程序检查循环内是否有改变条件的代码七、嵌套 while 循环一个 while 循环里面再套一个 while 循环就是嵌套循环。示例打印乘法表i 1 while i 9: # 外层循环控制行 j 1 while j i: # 内层循环控制列 print(f{j}×{i}{i*j}, end\t) # \t 是制表符对齐用 j j 1 print() # 每行结束换行 i i 1运行结果1×11 1×22 2×24 1×33 2×36 3×39 1×44 2×48 3×412 4×416 1×55 2×510 3×515 4×520 5×525 1×66 2×612 3×618 4×624 5×630 6×636 1×77 2×714 3×721 4×728 5×735 6×742 7×749 1×88 2×816 3×824 4×832 5×840 6×848 7×856 8×864 1×99 2×918 3×927 4×936 5×945 6×954 7×963 8×972 9×981执行过程理解i1: j1 → 打印 1×11, j变成2, j1? 否 → 内层结束, 换行 i2: j1 → 打印 1×22, j变成2 → 打印 2×24, j变成3, j2? 否 → 内层结束, 换行 i3: j1,2,3 → 打印 1×33, 2×36, 3×39 → 内层结束, 换行 ...以此类推示例打印矩形星星row 1 while row 5: col 1 while col 5: print(*, end ) # end 让星星之间有空格 col col 1 print() # 换行 row row 1运行结果* * * * * * * * * * * * * * * * * * * * * * * * *八、while 与 for 的区别什么时候用 while场景推荐用原因知道要循环多少次for更简洁如for i in range(10)不知道要循环多少次while条件驱动如直到用户输入正确遍历列表/字符串等for直接遍历元素需要复杂条件判断while条件可以写得很灵活对比示例打印 1 到 5用 forfor i in range(1, 6): print(i)用 whilei 1 while i 5: print(i) i i 1 对于这种知道循环次数的情况for更简洁。但while在不知道要循环几次的场景下更有优势。九、综合练习练习 1猜数字游戏import random secret random.randint(1, 100) # 随机生成 1-100 的数字 guess 0 attempts 0 print(猜数字游戏我想了一个 1 到 100 之间的数字。) while guess ! secret: guess int(input(请输入你的猜测)) attempts attempts 1 if guess secret: print(太小了) elif guess secret: print(太大了) print(f恭喜你猜对了答案是 {secret}你一共猜了 {attempts} 次。)运行示例猜数字游戏我想了一个 1 到 100 之间的数字。 请输入你的猜测50 太小了 请输入你的猜测75 太大了 请输入你的猜测60 太小了 请输入你的猜测68 恭喜你猜对了答案是 68你一共猜了 4 次。练习 2累加求和# 计算 123...100 total 0 i 1 while i 100: total total i # 把当前的 i 加到 total 里 i i 1 print(f123...100 {total}) # 5050练习 3计算阶乘# 计算 5! 5×4×3×2×1 120 n int(input(请输入一个正整数)) result 1 i n while i 1: result result * i i i - 1 print(f{n}! {result})运行示例请输入一个正整数5 5! 120练习 4输入正数并求平均total 0 count 0 while True: num input(请输入一个数字输入 done 结束) if num done: break num float(num) total total num count count 1 if count 0: average total / count print(f共输入 {count} 个数字总和为 {total}平均值为 {average:.2f}) else: print(没有输入任何数字)十、新手常见错误总结❌ 错误 1忘记缩进i 1 while i 5: print(i) # 错误没有缩进 i i 1报错IndentationError: expected an indented block❌ 错误 2忘记更新条件变量死循环i 1 while i 5: print(i) # 忘了 i i 1❌ 错误 3条件永远为 Truewhile 5 3: # 5 3 永远是 True print(停不下来)❌ 错误 4continue 导致变量不更新i 0 while i 5: if i 2: continue # 危险i 还是 2死循环 print(i) i i 1正确做法i 0 while i 5: i i 1 # 先更新 if i 2: continue print(i)十一、重点总结知识点说明while 条件:条件为 True 就执行循环体缩进循环体必须缩进4个空格更新变量循环体内必须有机会让条件变为 Falsebreak立即退出整个循环continue跳过本轮进入下一轮判断while...else循环正常结束时执行 else被 break 不执行while True无限循环通常配合 break 使用
返回列表