一、循环的核心思想
循环的本质是**“满足条件时重复执行一段代码”**,就像生活中:
- 重复数 1 到 10(已知次数)→ 用
for循环 - 重复喝水直到不渴(未知次数)→ 用
while循环
所有循环都包含 3 个核心要素:
- 初始化:循环开始前的初始状态(如计数器
i = 0) - 条件判断:决定是否继续循环的规则(如
i < 10) - 更新:每次循环后改变状态(如
i += 1)
二、for 循环(遍历循环)
for 循环是 Python 中最常用的循环,适用于已知循环次数或遍历可迭代对象(列表、字符串、字典、range 等)的场景。
1. 基本语法
for 变量 in 可迭代对象:
循环体代码(缩进!)
# 循环结束后执行的代码(无缩进)
2. 核心用法
(1)遍历序列(列表/字符串/元组)
# 遍历列表
fruits = ["apple", "banana", "orange"]
for fruit in fruits:
print(f"我喜欢吃 {fruit}")
# 遍历字符串
word = "Python"
for char in word:
print(f"字符:{char}")
输出:
我喜欢吃 apple
我喜欢吃 banana
我喜欢吃 orange
字符:P
字符:y
字符:t
字符:h
字符:o
字符:n
(2)遍历数字范围(range 函数)
range() 是生成整数序列的核心工具,语法:
range(n):生成 0 到 n-1 的整数(如range(3)→ 0,1,2)range(start, end):生成 start 到 end-1 的整数(如range(1,4)→ 1,2,3)range(start, end, step):指定步长(如range(0,10,2)→ 0,2,4,6,8)
# 数 1 到 5
for i in range(1, 6):
print(i)
# 倒序输出 10,8,6,4,2
for i in range(10, 0, -2):
print(i)
(3)遍历字典
student = {"name": "小明", "age": 18, "score": 90}
# 遍历键
for key in student:
print(f"键:{key},值:{student[key]}")
# 遍历键值对(推荐)
for k, v in student.items():
print(f"{k} = {v}")
3. for 循环的 else 子句
Python 特有的语法:else 块会在循环正常结束(未被 break 中断)时执行。
# 示例:检查列表中是否有偶数
nums = [1, 3, 5, 7]
for num in nums:
if num % 2 == 0:
print("找到偶数")
break
else:
print("列表中无偶数") # 会执行这行
三、while 循环(条件循环)
while 循环适用于未知循环次数的场景,只要条件为 True,就会持续执行。
1. 基本语法
初始化变量
while 条件表达式:
循环体代码
更新变量(避免死循环!)
2. 核心用法
(1)基础示例:数 1 到 5
i = 1 # 初始化
while i <= 5: # 条件判断
print(i)
i += 1 # 更新(必须!否则死循环)
(2)未知次数循环:猜数字游戏
import random
target = random.randint(1, 10) # 生成1-10的随机数
guess = 0
while guess != target:
guess = int(input("猜一个1-10的数字:"))
if guess > target:
print("猜大了!")
elif guess < target:
print("猜小了!")
print(f"恭喜猜对了!数字是 {target}")
(3)while 循环的 else 子句
和 for 循环一样,else 块在循环正常结束时执行:
i = 1
while i <= 3:
print(i)
i += 1
else:
print("循环正常结束") # 会执行
3. 死循环(重点避坑)
如果 while 的条件永远为 True,且没有 break 中断,会导致死循环(程序卡死)。
# 错误示例(死循环)
# i = 1
# while i <= 5:
# print(i) # 没有 i += 1,i 永远是 1
# 正确写法:加 break 控制退出
while True: # 故意写死循环
user_input = input("输入 q 退出:")
if user_input == "q":
break # 中断循环
print(f"你输入了:{user_input}")
四、循环控制语句(break/continue/pass)
1. break:立即终止整个循环
# 遍历列表,找到 "banana" 就停止
fruits = ["apple", "banana", "orange"]
for fruit in fruits:
if fruit == "banana":
print("找到香蕉,终止循环")
break
print(f"当前水果:{fruit}")
输出:
当前水果:apple
找到香蕉,终止循环
2. continue:跳过当前循环,直接进入下一次
# 打印 1-10 的奇数
for i in range(1, 11):
if i % 2 == 0:
continue # 跳过偶数
print(i)
3. pass:空语句(占位用)
pass 不做任何操作,仅用于语法上需要代码块但暂时不想写逻辑的场景:
for i in range(5):
if i == 3:
pass # 暂时不处理 i=3 的情况
else:
print(i)
五、嵌套循环
循环内部嵌套另一个循环,适用于二维数据(如矩阵、表格)处理。
1. 基础示例:打印九九乘法表
# 外层循环控制行数
for i in range(1, 10):
# 内层循环控制列数
for j in range(1, i+1):
print(f"{j}×{i}={i*j}", end="\t") # end="\t" 不换行,用制表符分隔
print() # 换行
输出:
1×1=1
1×2=2 2×2=4
1×3=3 2×3=6 3×3=9
...
1×9=9 2×9=18 3×9=27 4×9=36 5×9=45 6×9=54 7×9=63 8×9=72 9×9=81
2. 嵌套循环的控制
break/continue 仅作用于当前所在的循环,如需终止外层循环,可使用标记变量:
# 找到 (2,3) 后终止外层循环
found = False
for i in range(1, 4):
for j in range(1, 4):
if i == 2 and j == 3:
print(f"找到目标位置:({i},{j})")
found = True
break # 终止内层循环
if found:
break # 终止外层循环
六、循环的优化技巧
1. 尽量用 for 代替 while
for 循环更简洁、不易出错(无需手动更新计数器),优先使用。
2. 避免不必要的循环
- 用内置函数(如
sum()、max())代替手动循环计算:nums = [1,2,3,4,5] # 低效:手动循环求和 total = 0 for num in nums: total += num # 高效:用 sum() 内置函数 total = sum(nums)
3. 迭代时避免修改原列表
遍历列表时修改原列表会导致遍历异常,可遍历副本:
nums = [1,2,3,4,5]
# 错误:遍历中删除元素,会跳过部分值
# for num in nums:
# if num % 2 == 0:
# nums.remove(num)
# 正确:遍历列表副本
for num in nums[:]: # nums[:] 生成副本
if num % 2 == 0:
nums.remove(num)
print(nums) # [1,3,5]
七、总结
关键点回顾
- for 循环:适用于已知次数/遍历可迭代对象(列表、range、字典等),Python 中优先使用。
- while 循环:适用于未知循环次数的场景,必须确保有退出条件(避免死循环)。
- 控制语句:
break终止整个循环,continue跳过当前次循环,else子句在循环正常结束时执行。 - 嵌套循环:用于二维数据处理,
break/continue仅作用于当前循环。 - 优化原则:优先用内置函数代替手动循环,遍历列表时避免直接修改原列表。
相关文章
python教程:条件控制深入全面讲解
条件控制是编程中最基础也最重要的逻辑之一,它让程序能够根据不同的条件执行不同的代码分支。Python 中的条件控制主要通过 `if`、`elif`、`else` 实现,同时还包含三元表达式、条件判断的高级用法等。
Python教程:元组(Tuple)全面深入教程
元组是 Python 中核心且常用的序列型数据结构,它和列表(List)相似但又有本质区别——**不可变性**是其最核心的特征。下面从基础到进阶,全面讲解元组的所有知识点。
PyPI · The Python Package Index
Python 生态的 “中央仓库”,由 Python 软件基金会(PSF)维护。开发者可将 Python 包发布到 PyPI,其他开发者通过 pip 等工具从 PyPI 安装、更新、管理这些包。其核心功能包括包存储与分发、版本管理、包名管理、元数据管理、搜索与发现、安全审计等。
查看python全部内容
共4篇
返回专栏分类
一级分类总览
书签栏