04_Python循环语句

Python循环语句全面总结

一、循环语句概述

1.1 为什么需要循环语句

循环在程序中广泛存在,是实现许多功能的基础:

应用场景

  • 批量处理数据
  • 重复执行任务
  • 轮播展示内容
  • 自动化操作

二、while循环

2.1 while循环基础语法

语法结构

while 条件:
    条件满足时执行的代码

2.2 实际应用示例

# 表白100次
i = 0
while i < 100:
    print("小美,我喜欢你")
    i += 1

2.3 注意事项

  1. 条件必须是布尔类型True继续循环,False停止循环
  2. 设置终止条件:避免无限循环
  3. 正确缩进:循环体内的代码需要缩进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 最佳实践指南

  1. 选择循环类型

    • 需要条件控制:使用while循环
    • 需要遍历数据:使用for循环
  2. 避免无限循环

    • 确保有终止条件
    • 测试边界情况
  3. 合理使用控制语句

    • break:完全结束循环
    • continue:跳过当前迭代
  4. 保持代码可读性

    • 适当添加注释
    • 避免过度嵌套
    • 使用有意义的变量名

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循环语句,您已经掌握了程序重复执行任务的核心技能。循环语句是自动化处理的基础,在实际编程中应用极其广泛。多加练习,熟练掌握各种循环结构的应用场景,将为您的编程之路打下坚实基础。

posted @ 2026-01-23 14:36  FxorG  阅读(1)  评论(0)    收藏  举报