04_Python循环语句
Python循环语句全面总结
一、循环语句概述
1.1 为什么需要循环语句
循环在程序中广泛存在,是实现许多功能的基础:
应用场景:
- 批量处理数据
- 重复执行任务
- 轮播展示内容
- 自动化操作
二、while循环
2.1 while循环基础语法
语法结构:
while 条件:
条件满足时执行的代码
2.2 实际应用示例
# 表白100次
i = 0
while i < 100:
print("小美,我喜欢你")
i += 1
2.3 注意事项
- 条件必须是布尔类型:
True继续循环,False停止循环 - 设置终止条件:避免无限循环
- 正确缩进:循环体内的代码需要缩进4个空格
# 正确示例
i = 0
while i < 5:
print(f"第{i+1}次循环")
i += 1
# 错误示例(无限循环)
# i = 0
# while i < 5:
# print("无限循环") # 忘记i += 1
三、while循环基础案例
3.1 求1-100的和
total = 0
i = 1
while i <= 100:
total += i
i += 1
print(f"1-100的和为:{total}")
3.2 猜数字游戏
import random
# 生成随机数
num = random.randint(1, 100)
guess_count = 0
is_success = False
while not is_success:
guess = int(input("请输入你猜的数字:"))
guess_count += 1
if guess == num:
print(f"恭喜你,猜对了!一共猜了{guess_count}次")
is_success = True
elif guess > num:
print("猜大了,再试试")
else:
print("猜小了,再试试")
四、while循环的嵌套应用
4.1 嵌套语法结构
while 条件1:
# 外层循环代码
while 条件2:
# 内层循环代码
4.2 实际应用示例
# 表白100天,每天送10朵玫瑰
i = 1
while i <= 100:
print(f"今天是第{i}天,准备表白...")
j = 1
while j <= 10:
print(f"送给小美第{j}朵玫瑰花")
j += 1
print("小美,我喜欢你")
i += 1
print(f"坚持到第{i-1}天,表白成功")
4.3 嵌套注意事项
- 正确缩进:每层嵌套都需要正确缩进
- 避免无限循环:确保每层循环都有终止条件
- 逻辑清晰:复杂的嵌套需要保持代码可读性
五、while循环嵌套案例:九九乘法表
5.1 补充知识
print输出不换行
print("Hello", end='') # 输出不换行
print("World", end='') # 输出不换行
# 结果:HelloWorld
制表符\t
print("Hello\tWorld") # 使用制表符对齐
print("itheima\tbest") # 使用制表符对齐
5.2 九九乘法表实现
# 使用while循环打印九九乘法表
i = 1
while i <= 9:
j = 1
while j <= i:
print(f"{j}×{i}={i*j}", end='\t')
j += 1
print() # 换行
i += 1
输出结果:
1×1=1
1×2=2 2×2=4
1×3=3 2×3=6 3×3=9
...(以此类推)
六、for循环基础语法
6.1 for循环概念
for循环是一种"轮询"机制,对一批内容进行"逐个处理":
6.2 语法结构
for 临时变量 in 待处理数据集:
循环满足条件时执行的代码
6.3 实际应用示例
# 遍历字符串
name = "itheima"
for char in name:
print(char)
# 输出结果:
# i
# t
# h
# e
# i
# m
# a
6.4 for循环特点
- 无法自定义循环条件:只能被动处理数据集
- 无法构建无限循环:数据集有限
- 自动遍历:无需手动控制索引
七、range语句
7.1 range语句作用
range语句用于生成数字序列,常用于for循环:
7.2 三种语法格式
# 语法1:range(num)
for i in range(5):
print(i) # 输出:0,1,2,3,4
# 语法2:range(num1, num2)
for i in range(5, 10):
print(i) # 输出:5,6,7,8,9
# 语法3:range(num1, num2, step)
for i in range(1, 10, 2):
print(i) # 输出:1,3,5,7,9
7.3 实际应用
# 统计1-100中的偶数个数
num = 100
even_count = 0
for i in range(1, num):
if i % 2 == 0:
even_count += 1
print(f"1到{num}范围内,有{even_count}个偶数")
八、for循环的变量作用域
8.1 变量作用域规则
# 规范写法:临时变量只在循环内使用
for i in range(5):
print(i) # 正确:在循环内使用i
# print(i) # 不规范:在循环外访问i
# 如果需要循环外访问,提前定义
i = 0 # 提前定义
for i in range(5):
print(i)
print(f"最终i的值:{i}") # 规范:提前定义了i
8.2 最佳实践
- 尽量在循环内使用临时变量
- 如需外部访问,提前定义变量
- 遵循编程规范,提高代码可读性
九、for循环的嵌套应用
9.1 嵌套语法结构
for 临时变量1 in 数据集1:
# 外层循环代码
for 临时变量2 in 数据集2:
# 内层循环代码
9.2 实际应用示例
# 表白100天,每天送10朵玫瑰(for循环版本)
for i in range(1, 101):
print(f"今天是向小美表白的第{i}天,坚持...")
for j in range(1, 11):
print(f"送给小美的第{j}朵玫瑰花")
print(f"小美,我喜欢你(第{i}天的表白结束)")
print("表白成功!")
9.3 混合嵌套
# while和for循环可以相互嵌套
i = 1
while i <= 100:
print(f"第{i}天")
for j in range(1, 11):
print(f"送花{j}次")
i += 1
9.4 for循环实现九九乘法表
# 使用for循环打印九九乘法表
for i in range(1, 10):
for j in range(1, i + 1):
print(f"{j}×{i}={j*i}", end='\t')
print() # 换行
十、循环中断:break和continue
10.1 continue语句
作用:中断本次循环,直接进入下一次循环
# 追求小美100天,但根据心情决定是否送晚饭
for i in range(1, 101):
print(f"追求小美的第{i}天,坚持...")
print("送早饭")
print("送午饭")
mood = input("小美今天心情好吗?(0好/1坏):")
if mood == '1':
print("小美心情不好,晚饭不送了")
continue # 跳过本次循环的剩余部分
print("送晚饭")
print("表白")
10.2 break语句
作用:直接结束所在循环
# 追求小美直到被明确拒绝
for i in range(1, 101):
print(f"追求小美的第{i}天,坚持...")
print("送早饭")
print("送午饭")
response = input("小美是否明确拒绝?(0否/1是):")
if response == '1':
print("小美拒绝我了,结束追求")
break # 直接结束循环
print("送晚饭")
print("表白")
10.3 嵌套循环中的控制
# break和continue只影响所在层的循环
for i in range(1, 4):
print(f"外层循环:{i}")
for j in range(1, 4):
if j == 2:
continue # 只影响内层循环
if i == 2 and j == 1:
break # 只影响内层循环
print(f" 内层循环:{j}")
十一、综合案例:发工资系统
11.1 案例需求
- 公司账户余额1万元,给20名员工发工资
- 员工编号1-20,每人可领1000元
- 根据绩效分(1-10随机生成)决定是否发工资
- 绩效分低于5不发工资
- 工资发完即终止
11.2 完整代码实现
import random
# 初始化变量
money = 10000 # 账户余额
employee_count = 20 # 员工数量
salary_per_person = 1000 # 每人工资
print("开始发工资...")
for i in range(1, employee_count + 1):
# 检查余额是否充足
if money <= 0:
print("工资已发完,下个月再领吧")
break
# 生成绩效分
score = random.randint(1, 10)
# 判断是否发工资
if score < 5:
print(f"员工{i},绩效分{score},低于5,不发工资,下一位")
continue
# 发工资
if money >= salary_per_person:
money -= salary_per_person
print(f"向员工{i}发放工资{salary_per_person}元,账户余额剩余{money}元")
else:
# 余额不足发完整工资
remaining_salary = money
money = 0
print(f"向员工{i}发放工资{remaining_salary}元,账户余额已用完")
break
print("发工资流程结束")
11.3 案例优化版本
import random
def distribute_salary():
money = 10000
employees = list(range(1, 21))
print("=== 公司工资发放系统 ===")
for emp_id in employees:
if money <= 0:
print("\n工资已全部发放完毕")
break
# 生成绩效
performance = random.randint(1, 10)
if performance < 5:
print(f"员工{emp_id}:绩效{performance}分,不合格,跳过")
continue
# 计算本次发放金额
current_salary = min(salary_per_person, money)
money -= current_salary
print(f"员工{emp_id}:绩效{performance}分,合格,发放{current_salary}元")
if money == 0:
print("\n工资已全部发放完毕")
break
else:
print("\n所有员工处理完毕")
return money
# 执行发工资
remaining = distribute_salary()
print(f"最终账户余额:{remaining}元")
十二、循环语句对比总结
12.1 while vs for循环
| 特性 | while循环 | for循环 |
|---|---|---|
| 循环条件 | 自定义条件 | 遍历数据集 |
| 无限循环 | 支持 | 不支持 |
| 适用场景 | 条件控制循环 | 遍历数据 |
| 灵活性 | 高 | 相对固定 |
12.2 最佳实践指南
-
选择循环类型:
- 需要条件控制:使用while循环
- 需要遍历数据:使用for循环
-
避免无限循环:
- 确保有终止条件
- 测试边界情况
-
合理使用控制语句:
break:完全结束循环continue:跳过当前迭代
-
保持代码可读性:
- 适当添加注释
- 避免过度嵌套
- 使用有意义的变量名
12.3 性能考虑
# 更高效的循环写法
# 方法1:使用列表推导式(后续学习)
squares = [x**2 for x in range(10)]
# 方法2:提前计算避免重复计算
length = len(data_list) # 提前计算
for i in range(length): # 避免每次循环都计算长度
process(data_list[i])
通过系统学习Python循环语句,您已经掌握了程序重复执行任务的核心技能。循环语句是自动化处理的基础,在实际编程中应用极其广泛。多加练习,熟练掌握各种循环结构的应用场景,将为您的编程之路打下坚实基础。

浙公网安备 33010602011771号