一、为什么需要循环?¶
在编程中,我们经常需要重复执行某段代码。比如:打印1到10的数字、处理列表中的每个元素、或者让用户持续输入直到满足条件。这时候,循环就派上用场了——它能让我们用更少的代码完成重复任务,避免重复写代码。
Python中有两种最基础的循环结构:for循环和while循环。它们各有特点,适用不同场景。
二、for循环:遍历序列的“重复工具”¶
for循环主要用于遍历可迭代对象(比如列表、字符串、数字序列等),每次从序列中取出一个元素,执行循环体内的代码。
1. 基本语法¶
for 变量 in 可迭代对象:
# 循环体(缩进的代码块)
执行操作
可迭代对象是什么?简单说就是能“一个个取元素”的东西,比如列表([1,2,3])、字符串("hello")、range生成的数字序列等。
2. 常见用法举例¶
例1:打印1到5的数字
如果用for循环,我们可以用range(1,6)生成1到5的序列(range(a,b)生成从a到b-1的整数):
for num in range(1, 6): # num依次取1,2,3,4,5
print(num)
# 输出:1 2 3 4 5
例2:遍历列表中的元素
如果要处理列表里的每个元素(比如计算所有成绩的平均分):
scores = [90, 85, 95, 80]
total = 0
for score in scores: # score依次取90,85,95,80
total += score # 累加每个分数
average = total / len(scores)
print("平均分:", average) # 输出:平均分: 87.5
例3:遍历字符串
字符串也是可迭代对象,for循环会逐个取出字符:
message = "Python"
for char in message:
print(char)
# 输出:P y t h o n(每个字符一行)
三、while循环:条件控制的“重复开关”¶
while循环的核心是判断一个条件是否成立,如果条件为True,就执行循环体;条件为False,则停止循环。
1. 基本语法¶
while 条件:
# 循环体(缩进的代码块)
执行操作
# (重要!通常需要修改条件中的变量,否则可能无限循环)
关键点:while循环的次数由条件决定,所以必须确保条件最终会变为False,否则会陷入“无限循环”。
2. 常见用法举例¶
例1:计算1到10的和
用while循环累加,初始值count=1,每次加1直到count=11:
count = 1
total = 0
while count <= 10: # 条件:count不超过10
total += count # 累加当前count
count += 1 # 修改条件变量,否则条件永远为True
print("总和:", total) # 输出:总和:55
例2:用户输入验证(直到正确输入)
假设需要用户输入“密码”,直到输入正确(比如密码是123456):
password = "123456"
user_input = ""
while user_input != password: # 条件:输入不等于密码时继续循环
user_input = input("请输入密码:")
if user_input != password:
print("密码错误,请重试!")
print("密码正确,欢迎使用!")
四、for循环 vs while循环:核心区别¶
| 对比项 | for循环 | while循环 |
|---|---|---|
| 循环依据 | 遍历可迭代对象(如列表、字符串、range) | 判断条件是否成立(由代码手动控制) |
| 循环次数 | 通常固定(由序列长度决定) | 由条件控制(可能无限循环,除非条件修改) |
| 适用场景 | 明确知道要遍历的对象(如处理列表元素) | 不确定循环次数,但有终止条件(如用户交互) |
五、应用场景总结¶
优先用for循环的情况:
- 需要遍历列表、字符串、元组等数据(比如处理“学生姓名列表”);
- 生成一个已知范围的数字序列(用range,比如“打印1到100的偶数”);
- 处理可迭代对象(如字典的键、值或键值对)。
优先用while循环的情况:
- 不确定循环次数,但知道终止条件(比如“直到用户输入正确”);
- 需要持续等待某个事件发生(如“监控文件是否更新”);
- 条件依赖于之前的操作结果(比如“累加直到总和超过100”)。
六、避坑指南:初学者常见错误¶
-
while循环无限循环:忘记在循环体内修改条件变量!
比如:count = 1; while count <= 10: print(count);(如果没有count +=1,会一直打印1)。 -
for循环遍历不可变类型:
for只能遍历可迭代对象,如果直接遍历数字(如for num in 10)会报错。 -
range的参数错误:
range(a, b)必须满足a < b,否则生成空序列(比如range(5,1)不会循环)。
七、小练习¶
尝试用两种循环实现“打印1到10的平方”:
- for循环:用range(1,11)遍历,每次计算num*num;
- while循环:初始化count=1,循环内计算平方,同时count +=1直到count>10。
通过对比两种写法,你会更清晰地理解它们的区别~
循环是编程中处理重复任务的核心工具。掌握for和while的特点后,就能根据实际场景灵活选择,让代码更简洁高效!