面向所有人的Python编程——循环迭代

AI赋能编程语言挑战赛 10w+人浏览 449人参与

部署运行你感兴趣的模型镜像

🔄 循环:自动化重复任务

📌 循环的核心价值

  • 计算机的优势:重复相同任务而不出错

  • 人类的劣势:重复任务容易出错且效率低

  • 编程目标:将重复任务自动化

🔁 while循环:不确定循环

📝 基本语法

python

while 条件:
    # 循环体代码

🔄 执行流程

  1. 评估条件:产生True或False

  2. 条件为假:退出while循环,继续执行后续代码

  3. 条件为真:执行循环体,然后返回步骤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检查Noneif value is None:

  • 处理None的情况:在比较前检查是否为None

3. 性能考虑

  • 及时break:找到目标后尽早退出循环

  • 减少循环内计算:将不变的计算移到循环外

  • 使用适当的数据结构:根据需求选择列表、集合或字典

💎 核心要点总结

循环类型

  1. while循环:条件控制,不确定循环次数

  2. for循环:遍历序列,确定循环次数

循环控制

  1. break:立即退出整个循环

  2. continue:跳过当前迭代,继续下一次

常见模式

  1. 计数:统计元素个数

  2. 求和:计算累加值

  3. 求平均值:结合计数和求和

  4. 过滤:筛选符合条件的元素

  5. 搜索:查找特定元素

  6. 最大值/最小值:比较所有元素

最佳实践

  1. 使用None初始化:当没有合适的初始值时

  2. 确保循环终止:避免无限循环

  3. 清晰的条件:使用有意义的变量名和条件

  4. 适当的退出策略:及时使用break减少不必要的迭代

编程思维:循环让计算机具备了处理大量重复任务的能力。掌握循环设计模式,就像掌握了自动化生产的流水线——你可以告诉计算机如何处理每一个元素,最终得到你想要的结果。记住,好的循环设计既要考虑正确性,也要考虑效率和可读性!

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值