for循环基本语法
for 变量 in 可迭代对象:
# 循环体,每次迭代执行的代码
代码块
变量
:每次迭代时,会从可迭代对象中取出一个元素并赋值给这个变量。可迭代对象
:可以被遍历的对象,例如列表、元组、字符串等。代码块
:每次迭代时要执行的代码,需要有适当的缩进(通常是 4 个空格)。
执行流程
- 从可迭代对象中取出第一个元素,将其赋值给变量。
- 执行循环体中的代码块。
- 从可迭代对象中取出下一个元素,再次赋值给变量,然后执行循环体代码。
- 重复步骤 3,直到可迭代对象中的元素全部被遍历完。
示例代码及解释
遍历列表
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
- 这里的
fruits
是一个列表,属于可迭代对象。 - 每次循环时,
fruit
变量会依次被赋值为列表中的元素,然后打印出来。 - 输出结果:
apple
banana
cherry
遍历字符串
message = "Hello"
for char in message:
print(char)
message
是一个字符串,也是可迭代对象。- 每次循环,
char
变量会依次被赋值为字符串中的字符并打印。 - 输出结果:
H
e
l
l
o
结合 range()
函数
range()
函数常用于生成一个整数序列,常与 for
循环搭配使用来控制循环次数。
for i in range(5):
print(i)
range(5)
会生成一个从 0 到 4 的整数序列。- 每次循环,
i
变量会依次被赋值为序列中的整数并打印。 - 输出结果:
0
1
2
3
4
for
循环的其他用法
遍历字典
person = {"name": "John", "age": 30, "city": "New York"}
for key in person:
print(key, ":", person[key])
- 遍历字典时,默认遍历的是字典的键。
- 通过键可以访问对应的值。
- 输出结果:
name : John
age : 30
city : New York
for-else
结构
numbers = [1, 2, 3, 4, 5]
for num in numbers:
if num == 6:
print("找到了 6")
break
else:
print("没有找到 6")
for-else
结构中,else
子句会在for
循环正常结束(即没有通过break
语句提前退出)时执行。- 此例中,由于列表里没有 6,循环正常结束,所以会执行
else
子句的代码。 - 输出结果:
没有找到 6
while
循环的基本语法
while 条件表达式:
# 循环体(条件为 True 时执行的代码块)
代码1
代码2
... # 可以包含任意合法的 Python 代码
while
循环的执行流程
- 判断条件:首先计算
条件表达式
的值,得到一个布尔值(True
或False
)。 - 执行循环体:如果条件为
True
,则执行循环体内的代码。 - 重复判断:循环体执行完毕后,再次回到条件表达式进行判断,若仍为
True
,则重复执行循环体;若为False
,则退出循环。
核心逻辑:只要条件为真,就重复执行循环体,直到条件为假时停止。
示例代码与解析
示例 1:简单计数循环
count = 0 # 初始化计数器
while count < 5: # 条件:count 小于 5 时执行循环
print(f"当前计数:{count}")
count = count + 1 # 计数器自增(避免无限循环)
- 执行过程:
count = 0
,条件0 < 5
为True
,打印0
,count
变为1
。count = 1
,条件1 < 5
为True
,打印1
,count
变为2
。- 以此类推,直到
count = 5
时,条件为False
,循环终止。
- 输出结果:
plaintext
当前计数:0 当前计数:1 当前计数:2 当前计数:3 当前计数:4
示例 2:处理用户输入(直到输入正确为止)
while True: # 无限循环(条件永远为 True,需手动退出)
user_input = input("请输入数字(输入 'q' 退出):")
if user_input == 'q':
print("退出循环!")
break # 强制退出循环
elif user_input.isdigit(): # 检查是否为数字
print(f"你输入的数字是:{user_input}")
else:
print("输入无效,请重新输入!")
- 关键点:
while True
会形成一个无限循环,必须通过break
语句退出。break
用于立即终止循环,continue
用于跳过本次循环剩余代码,直接进入下一次条件判断。
while-else
结构(进阶用法)
Python 中的 while
循环可以搭配 else
子句使用,语法如下:
while 条件表达式:
循环体代码
else:
# 当循环 **正常结束**(未被 break 中断)时执行的代码
代码块
示例:寻找因子
n = 10
i = 2
while i < n:
if n % i == 0:
print(f"{n} 不是质数,因子为 {i}")
break # 找到因子后退出循环
i = i + 1
else:
# 若循环未被 break 中断(即没有找到因子),说明是质数
print(f"{n} 是质数")
- 输出结果:
plaintext
10 不是质数,因子为 2
- 逻辑说明:
- 如果循环通过
break
退出(找到因子),则不执行else
代码。 - 如果循环因条件为假而正常结束(未找到因子),则执行
else
代码。
- 如果循环通过
注意事项
-
避免无限循环:
- 确保循环体内有修改条件表达式的代码(如计数器自增),否则会导致无限循环(需手动按
Ctrl+C
终止程序)。
python
# 错误示例(无限循环) while True: print("这是一个无限循环!") # 无退出条件,需手动终止
- 确保循环体内有修改条件表达式的代码(如计数器自增),否则会导致无限循环(需手动按
-
条件表达式的类型:
- 条件表达式可以是任何返回布尔值的表达式(如比较运算、逻辑运算、函数调用等)。
python
while x > 0 and y < 10: # 多个条件组合 ... while not is_valid(): # 调用函数返回布尔值 ...
-
循环控制语句:
break
:立即退出当前循环。continue
:跳过本次循环剩余代码,直接进入下一次条件判断。pass
:空操作,用于占位(避免语法错误)。
while
循环 vs for
循环
场景 | while 循环 | for 循环 |
---|---|---|
适用场景 | 未知循环次数,依赖条件判断 | 已知循环次数,遍历可迭代对象(如列表、字符串) |
语法核心 | 条件驱动 | 迭代驱动 |
典型示例 | 用户输入验证、游戏循环、异步任务监听 | 遍历列表元素、字符串字符、字典键值对 |
总结
while
循环是 Python 中基于条件判断的循环语句,适用于循环次数不确定的场景。核心是通过一个布尔条件控制循环的执行,配合 break
、continue
等语句可以实现灵活的逻辑控制。记住:使用 while
时一定要确保条件最终会变为 False
,避免无限循环!