前言

在日常生活中,我们经常遇到需要“挨个处理”的事情。比如:点名时挨个叫学生的名字、逛超市时把购物车里的商品挨个扫码结账。
在Python中,处理这种“挨个遍历”的任务,for 循环是绝对的王者!它的核心思想是:“把队伍里的每一个元素都请出来,挨个处理一遍”。

for 循环的基本语法与核心概念

for 循环的蓝图长这样:

for 临时变量 in 可迭代对象(比如列表、字符串):
    # 缩进的代码块
    # 每次拿出一个元素,就会执行一次这里的代码

新手必读: 这里的 临时变量 是你自己起的名字(叫 iitemfruit 都可以)。你可以把它想象成一个“抓手”,它每次会从集合里抓取一个东西出来,用完就去抓下一个。

🍎 基础示例 1:遍历列表(点名册)

假设你有一个水果筐(列表),我们用 for 循环把里面的水果挨个拿出来吃掉:

fruits =["苹果", "香蕉", "葡萄", "西瓜"]

# fruit 就是那个“临时变量”,每次代表列表里的一个水果
for fruit in fruits:
    print(f"我正在吃:{fruit} 🍉")

print("水果全吃光啦!")

(看!不需要像 while 循环那样自己维护一个 count += 1for 循环会自动帮你往后走!)

🔠 基础示例 2:遍历字符串(拆字游戏)

字符串就像是一个装着许多字符的盒子,for 循环也可以把它们挨个拆开:

for letter in "Python":
    print(f"当前字母是: {letter}")

for 循环的最佳拍档:range() 函数

如果我们不想遍历列表,只是单纯想“重复执行某段代码N次”,或者想“从 1 数到 100”,就需要请出 for 循环的黄金搭档:range() 函数。它就像是一个流水线机器,专门负责生产连续的数字。

  • range(5):重复 5 次(生成 0, 1, 2, 3, 4)
  • range(1, 6):从 1 数到 5(顾头不顾尾,包含起点1,不包含终点6)
  • range(1, 10, 2):跳着数(生成 1 到 10 之间的所有奇数:1, 3, 5, 7, 9)
# 打印 3 次“你好”
for i in range(3):
    print("你好,Python!")

如果我需要“序号(Index)”怎么办?

很多学过 C++ 或 Java 的朋友会发现,Python 的 for item in list:直接把“值”拿出来,没有自带序号。但在实际开发中,我们非常频繁地需要知道当前元素排在第几个

别担心,Python 为你准备了两种完美的解决方案:

🌟 方案一:最优雅、最地道的做法 —— enumerate() 函数(强烈推荐)

enumerate 的英文意思是“枚举”。你可以把它想象成一个“贴标签机”,它会在你遍历列表的同时,自动给每一个元素贴上递增的序号。

heroes =["钢铁侠", "蜘蛛侠", "蝙蝠侠"]

# index 接收序号,hero 接收具体的英雄名字
for index, hero in enumerate(heroes):
    print(f"编号 {index} 的英雄是:{hero}")

# --- 输出结果 ---
# 编号 0 的英雄是:钢铁侠
# 编号 1 的英雄是:蜘蛛侠
# 编号 2 的英雄是:蝙蝠侠

💡 神奇的小技巧: 如果你是做界面展示,希望序号从 1 开始给普通用户看,可以直接加上 start=1

for index, hero in enumerate(heroes, start=1):
    print(f"第 {index} 名:{hero}")
# 输出:第 1 名:钢铁侠 ...

🛠️ 方案二:修改原数据时的做法 —— 结合 range(len())

思路是:先用 len() 获取列表有多长,再用刚刚学过的 range() 生成一串序号,最后通过序号去列表里拿东西。
当你必须要通过序号去“修改”原列表里的数据时,这种写法最合适:

scores = [80, 90, 85]

# len(scores) 是 3,range(3) 会生成 0, 1, 2
for i in range(len(scores)):
    # i 是序号,我们通过 scores[i] 拿到具体的分数并直接修改它
    scores[i] = scores[i] + 5

print("加分后的成绩单:", scores)
# 输出:加分后的成绩单: [85, 95, 90]

四、 实战案例

学了理论,我们来看看 for 循环在真实写代码时能帮我们解决什么问题。

🛒 案例一:购物车自动结账(累加求和)

cart_prices =[12.5, 30.0, 9.9, 50.5, 8.0]
total_money = 0  # 准备一个空钱包来装总金额

for price in cart_prices:
    total_money += price  # 挨个加到钱包里

print(f"💳 您好,您一共消费了:{total_money} 元。")

🚦 案例二:带 VIP 识别的批量问候(结合 break 和 continue)

for 循环里同样可以使用 break(提前彻底终止)和 continue(跳过本次,继续下一次)。

users =["张三", "李四", "王五", "黑客", "赵六"]

for user in users:
    if user == "黑客":
        print("🚨 警告:发现黑客!停止后面的所有问候!")
        break  # 遇到黑客,直接关闭整个循环

    if user == "王五":
        print("👑 尊贵的VIP王五,您好!")
        continue # 单独问候完王五,跳过下面的普通问候,直接去接待下一个人

    print(f"普通用户 {user},欢迎登录!")

终极对比:for 还是 while

很多新手会迷茫:什么时候用 for,什么时候用 while?记住这个简单的口诀:

  1. 知道次数 / 有现成的东西(列表/字符串)去遍历 ➡️ for 循环
    (例如:遍历 100 个文件、打印 10 次、计算列表里数字的和)
  2. 不知道次数,只看某个“条件”是否满足 ➡️ while 循环
    (例如:玩游戏直到玩家输掉、让用户一直输入密码直到输对为止)
分类: Python 新手教程 标签: Pythonfor

评论

暂无评论数据

暂无评论数据

目录