目录
1. for循环
1.1 使用range()函数
2. while循环:基于条件的持续执行
3. 循环控制语句
3.1 break语句
3.2 continue语句
3.3 else子句(仅适用于for和while循环)
4. 循环的最佳实践与注意事项
本文将深入探讨Python中两种主要的循环结构:for
循环和while
循环,以及与循环密切相关的控制流语句——break
、continue
和else
。通
1. for
循环
for
循环是Python中用于迭代有序数据结构(如列表、元组、集合、字典、字符串等)的首选工具。其简洁的语法使得遍历序列中的每个元素变得轻松自如。
fruits = ["苹果", "香蕉", "橙子", "柚子", "西瓜"]for fruit in fruits:print(f"品尝美味的{fruit}")
#输出为:
'''品尝美味的苹果
品尝美味的香蕉
品尝美味的橙子
品尝美味的柚子
品尝美味的西瓜'''
在上述代码中,for fruit in fruits:
语句初始化了一个循环,将fruits
列表中的每一个元素依次赋值给变量fruit
。紧接着的缩进代码块在每次迭代中被执行,打印出当前水果的名称。for
循环自动管理迭代过程,无需手动跟踪索引或修改迭代变量。
1.1 使用range()
函数
除了直接遍历已存在的序列,Python还提供了内置函数range()
来生成一个整数序列,常用于需要循环指定次数的情况:
for i in range(10):print(f"这是第{i+1}次循环")
'''输出为:
这是第1次循环
这是第2次循环
这是第3次循环
这是第4次循环
这是第5次循环
这是第6次循环
这是第7次循环
这是第8次循环
这是第9次循环
这是第10次循环'''
range(10)
产生一个包含从0到9(不含10)的整数序列。循环体内部,i
依次取这些整数值,并打印出对应的循环次数。
range()的用法如下,可以用作当索引,例如大小是集合的len(),可以遍历索引
for i in range(5,9):print(i)#5,6,7,8for i in range(0, 10, 3) :print(i)#0,3,6,9for i in range(-10, -100, -30) :print(i)#-10,-40,-70
2. while
循环:基于条件的持续执行
while
循环根据给定的布尔条件来决定是否继续执行循环体内的代码。只要条件保持为True
,循环就会一直进行下去。当条件变为False
时,循环终止。
countdown = 5while countdown > 0:print(f"倒计时:{countdown}")countdown -= 1
'''输出为
倒计时:5
倒计时:4
倒计时:3
倒计时:2
倒计时:1
'''
在这个例子中,while countdown > 0:
定义了循环条件。每次循环结束后,都会递减countdown
的值。当countdown
降至0时,条件不再满足,循环自然结束。
3. 循环控制语句
3.1 break
语句
break
语句用于立即退出当前正在执行的最内层循环,无论循环条件是否仍然为真。它通常与某种条件检查结合使用,以便在特定情况下提前终止循环。
secret_number = 42
guess = Nonewhile guess != secret_number:guess = int(input("请输入你猜的数字:"))if guess == secret_number:print("恭喜,你猜对了!")breakelif guess < secret_number:print("猜小了,再试试!")else:print("猜大了,继续努力!")
'''请输入你猜的数字:41
猜小了,再试试!
请输入你猜的数字:43
猜大了,继续努力!
请输入你猜的数字:42
恭喜,你猜对了!'''
当用户猜中秘密数字时,break
语句确保循环立即结束,避免了不必要的后续迭代。
3.2 continue
语句
continue
语句用于跳过当前循环迭代的剩余部分,直接进入下一次迭代。这在需要忽略某些情况或者提前更新循环变量以进行下一轮时非常有用。
numbers = [1, 3, 5, 8, 1/4, 10]for num in numbers:if not isinstance(num, int):continue # 跳过非整数元素if num % 2 == 0:print(f"{num} 是偶数")else:print(f"{num} 是奇数")
'''会跳过1/4 ,如果不写这个判断的话会走到else
运行结果:
1 是奇数
3 是奇数
5 是奇数
8 是偶数
10 是偶数
'''
在此示例中,当遇到非整数元素时,continue
语句使得循环直接跳过对该元素的处理,仅对整数执行奇偶性检查。
3.3 else
子句(仅适用于for
和while
循环)
Python的for
和while
循环可以包含一个可选的else
子句。这个子句紧跟在循环主体之后,且无需缩进。当循环正常结束(即没有被break
语句中断)时,else
子句中的代码会被执行。这对于区分“找到”和“未找到”等场景尤为实用。
search_list = [3, 5, 7, 9, 12]target = 6for item in search_list:if item == target:print(f"找到了目标值 {target}!")break
else:print(f"列表中未找到目标值 {target}。")
如果循环遍历完整个列表都没有找到匹配的目标值,else
子句中的代码会被执行,通知用户目标值不在列表中。
4. 循环的最佳实践与注意事项
-
避免无限循环:确保
while
循环的条件最终能够变为False
,防止程序陷入无休止的循环中。 -
适当使用
break
和continue
:虽然它们能提供灵活的控制流,但过度使用可能导致代码难以理解和维护。尽量使循环逻辑清晰、简洁。 -
理解
for
循环的迭代原理:对于复杂的迭代对象(如多层嵌套结构或自定义迭代器),确保理解其迭代行为,以正确遍历所需元素。 -
利用列表推导式和生成器表达式:对于简单的数据转换和过滤任务,可以考虑使用列表推导式或生成器表达式代替显式的循环,以提高代码的简洁性和效率。
-
避免修改正在迭代的序列:在
for
循环中直接修改正在遍历的序列可能导致意外行为。如果需要修改,可考虑先复制一份副本进行操作,或者使用enumerate()
等方法间接修改。