🔄 循环:自动化重复任务
📌 循环的核心价值
-
计算机的优势:重复相同任务而不出错
-
人类的劣势:重复任务容易出错且效率低
-
编程目标:将重复任务自动化
🔁 while循环:不确定循环
📝 基本语法
python
while 条件:
# 循环体代码
🔄 执行流程
-
评估条件:产生True或False
-
条件为假:退出while循环,继续执行后续代码
-
条件为真:执行循环体,然后返回步骤1
⚠️ 重要概念:迭代
-
迭代:每次执行循环体的过程
-
循环:因为第三步会回到第一步,形成循环
🚨 无限循环警告
python
# 危险:无限循环!
n = 5
while n > 0:
print("无限循环!") # 永远执行,不会停止
# n 的值从未改变,条件永远为True
✅ 正确的循环设计
python
# 正确:有终止条件的循环
n = 5
while n > 0:
print(f"倒计时: {n}")
n = n - 1 # 改变条件变量,确保循环终止
print("发射!")
🔄 零次循环
python
# 条件一开始就是False,循环体一次也不执行
n = 0
while n > 0:
print("这行永远不会执行")
print("直接跳过循环")
🔀 循环控制语句
🛑 break:立即退出循环
python
while True: # 无限循环
line = input("> ")
if line == "done":
break # 遇到break,立即跳出循环
print(line)
print("完成!")
📊 break执行流程
text
while True:
↓
if 条件:
break → 直接跳到这里
↓ ↓
其他代码 循环外代码
🔄 continue:跳过当前迭代
python
while True:
line = input("> ")
if line[0] == "#": # 检查是否以#开头
continue # 跳过当前迭代,回到循环开始
if line == "done":
break
print(line)
print("完成!")
💡 line[0] == '#' 的含义
python
# line[0]:获取字符串的第一个字符 # == '#':判断是否为井号(注释符号) # 这通常用于跳过注释行
📊 continue执行流程
text
while True:
↓
if 条件:
continue → 回到这里
↓
其他代码
↓
回到循环开始
🔂 for循环:确定循环
📝 基本语法
python
for 迭代变量 in 序列:
# 循环体代码
🔄 for vs while
| 特征 | for循环 | while循环 |
|---|---|---|
| 类型 | 确定循环 | 不确定循环 |
| 控制 | 遍历已知集合 | 条件控制 |
| 迭代次数 | 集合元素个数 | 直到条件为False |
| 适用场景 | 遍历序列 | 条件满足时重复 |
🎯 for循环示例
python
# 遍历数字列表
for i in [5, 4, 3, 2, 1]:
print(i)
print("发射!")
# 遍历字符串
for char in "hello":
print(char)
# 遍历单词列表
words = ["apple", "banana", "cherry"]
for word in words:
print(word)
🔍 迭代机制详解
python
# 迭代变量会"依次遍历"整个序列
for i in [5, 4, 3, 2, 1]:
# 第一次迭代:i = 5
# 第二次迭代:i = 4
# ...
# 第五次迭代:i = 1
print(f"当前值: {i}")
🏆 循环应用模式
1. 计数器模式
python
# 统计元素个数
count = 0 # 初始化计数器
print(f"开始前: {count}")
for num in [9, 41, 12, 3, 74, 15]:
count = count + 1 # 每次循环加1
print(f"当前计数: {count}, 当前值: {num}")
print(f"结束后: {count}") # 总个数
💡 计数器类比
就像数钱:每数一张钞票,就在心里加1,最后就知道总数
2. 求和模式
python
# 计算总和
total = 0 # 初始化总和
print(f"开始前: {total}")
for num in [9, 41, 12, 3, 74, 15]:
total = total + num # 累加
print(f"当前总和: {total}, 当前值: {num}")
print(f"结束后: {total}") # 最终总和
💡 求和类比
就像往空钱包里塞钱:每次塞一张,最后看总共多少钱
3. 求平均值模式
python
# 计算平均值
count = 0
total = 0
for num in [9, 41, 12, 3, 74, 15]:
count = count + 1
total = total + num
if count > 0:
average = total / count
print(f"平均值: {average}")
else:
print("列表为空")
4. 过滤模式
python
# 找出大于20的数字
print("大于20的数字:")
for num in [9, 41, 12, 3, 74, 15]:
if num > 20: # 条件判断
print(num)
# 找出以特定字母开头的单词
words = ["apple", "banana", "cherry", "apricot", "blueberry"]
print("以'a'开头的单词:")
for word in words:
if word[0] == 'a': # 检查首字母
print(word)
5. 搜索模式
python
# 检查是否存在特定值
found = False # 布尔变量,初始为False
search_value = 12
for num in [9, 41, 12, 3, 74, 15]:
if num == search_value:
found = True # 找到后设为True
break # 可选:找到后立即退出循环
if found:
print(f"找到了 {search_value}")
else:
print(f"没有找到 {search_value}")
🔍 最大值与最小值查找
🏆 查找最大值
python
# 方法1:使用负无穷初始化
max_value = float('-inf') # 最小的数
for num in [9, 41, 12, 3, 74, 15]:
if num > max_value:
max_value = num # 更新最大值
print(f"最大值: {max_value}")
# 方法2:使用None初始化(推荐)
max_value = None # 表示"还没看到任何数字"
for num in [9, 41, 12, 3, 74, 15]:
if max_value is None or num > max_value:
max_value = num
print(f"最大值: {max_value}")
💡 计算机 vs 人类思维
人类:一眼看出最大值
计算机:必须逐个比较,最后得出结论
📉 查找最小值
python
# 方法1:使用正无穷初始化
min_value = float('inf') # 最大的数
for num in [9, 41, 12, 3, 74, 15]:
if num < min_value:
min_value = num # 更新最小值
print(f"最小值: {min_value}")
# 方法2:使用None初始化(推荐)
min_value = None
for num in [9, 41, 12, 3, 74, 15]:
if min_value is None or num < min_value:
min_value = num
print(f"最小值: {min_value}")
🎯 None类型与is运算符
📦 None类型
-
含义:表示"无"或"空"
-
特点:只有一个值
None -
用途:初始化变量,表示尚未赋值
🔍 is 运算符
python
# is 与 == 的区别 x = None y = None print(x is y) # True: 是同一个对象 print(x == y) # True: 值相等 # 但要注意: a = [] b = [] print(a is b) # False: 不同的列表对象 print(a == b) # True: 值相等(都是空列表)
💡 is 的使用场景
python
# 检查是否为None
value = None
if value is None: # 正确:检查是否是None对象
print("值未设置")
if value == None: # 也可以,但is更推荐
print("值未设置")
# 初始化最大值查找
max_val = None
for num in numbers:
if max_val is None or num > max_val:
max_val = num
🧩 循环设计模式总结
📋 常见模式模板
1. 计数器模式
python
count = 0
for item in collection:
count = count + 1
2. 求和模式
python
total = 0
for item in collection:
total = total + item
3. 平均值模式
python
count = 0
total = 0
for item in collection:
count = count + 1
total = total + item
average = total / count
4. 过滤模式
python
for item in collection:
if condition: # 特定条件
print(item) # 或执行其他操作
5. 搜索模式
python
found = False
for item in collection:
if item == target:
found = True
break # 可选
6. 最大值模式
python
max_val = None
for item in collection:
if max_val is None or item > max_val:
max_val = item
7. 最小值模式
python
min_val = None
for item in collection:
if min_val is None or item < min_val:
min_val = item
🚀 实战示例
📊 数据分析示例
python
# 分析考试成绩
scores = [85, 92, 78, 90, 65, 88, 76, 95, 89, 72]
# 初始化统计变量
count = 0
total = 0
max_score = None
min_score = None
passed = 0 # 及格人数(≥60)
# 遍历所有成绩
for score in scores:
# 计数
count += 1
# 求和
total += score
# 最大值
if max_score is None or score > max_score:
max_score = score
# 最小值
if min_score is None or score < min_score:
min_score = score
# 统计及格人数
if score >= 60:
passed += 1
# 计算结果
average = total / count
pass_rate = passed / count * 100
# 输出报告
print(f"成绩分析报告:")
print(f" 考试人数: {count}")
print(f" 最高分: {max_score}")
print(f" 最低分: {min_score}")
print(f" 平均分: {average:.1f}")
print(f" 及格率: {pass_rate:.1f}%")
🔧 用户输入处理
python
# 处理用户输入直到特定条件
total = 0
count = 0
print("请输入数字,输入'done'结束:")
while True:
user_input = input("> ")
if user_input == "done":
break
try:
# 尝试转换为数字
number = float(user_input)
total += number
count += 1
except ValueError:
print("请输入有效的数字!")
continue # 跳过当前迭代
if count > 0:
print(f"\n统计结果:")
print(f" 数字个数: {count}")
print(f" 总和: {total}")
print(f" 平均值: {total / count:.2f}")
else:
print("没有输入有效数字。")
💡 重要提醒
1. 循环设计要点
-
确保终止:while循环必须有条件会变为False
-
避免无限循环:检查条件是否会改变
-
使用break谨慎:确保有退出循环的条件
-
初始化变量:在循环开始前正确初始化变量
2. None初始化技巧
-
何时使用None:当没有合适的初始值时
-
使用is检查None:
if value is None: -
处理None的情况:在比较前检查是否为None
3. 性能考虑
-
及时break:找到目标后尽早退出循环
-
减少循环内计算:将不变的计算移到循环外
-
使用适当的数据结构:根据需求选择列表、集合或字典
💎 核心要点总结
循环类型
-
while循环:条件控制,不确定循环次数
-
for循环:遍历序列,确定循环次数
循环控制
-
break:立即退出整个循环
-
continue:跳过当前迭代,继续下一次
常见模式
-
计数:统计元素个数
-
求和:计算累加值
-
求平均值:结合计数和求和
-
过滤:筛选符合条件的元素
-
搜索:查找特定元素
-
最大值/最小值:比较所有元素
最佳实践
-
使用None初始化:当没有合适的初始值时
-
确保循环终止:避免无限循环
-
清晰的条件:使用有意义的变量名和条件
-
适当的退出策略:及时使用break减少不必要的迭代
编程思维:循环让计算机具备了处理大量重复任务的能力。掌握循环设计模式,就像掌握了自动化生产的流水线——你可以告诉计算机如何处理每一个元素,最终得到你想要的结果。记住,好的循环设计既要考虑正确性,也要考虑效率和可读性!
1299

被折叠的 条评论
为什么被折叠?



