从零开始:Python语言基础之循环结构(for/while)

一、for循环:基于迭代的循环逻辑

 

 for 循环的设计初衷是遍历可迭代对象( iterable ),通过依次提取对象中的元素执行循环体。其语法结构如下:

 

for 变量名 in 可迭代对象:

    循环体语句

 

 

其中,可迭代对象是指能够被 for 循环逐个访问的对象,常见的包括列表、元组、字符串、字典、集合以及生成器等。

 

1. 遍历基础数据类型

 

列表遍历

 
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)
 

执行过程中, fruit 变量会依次被赋值为 "apple" 、 "banana" 、 "cherry" ,每次迭代都会执行 print(fruit) 语句。

 

字符串遍历

text = "Python"
for char in text:
    print(char)

字符串本质上是字符的序列, for 循环会将每个字符依次赋给 char 变量,实现字符级别的操作。

 

字典遍历

student = {"name": "Alice", "age": 20, "major": "Computer Science"}
# 遍历键
for key in student:
    print(key)
# 遍历值
for value in student.values():
    print(value)
# 同时遍历键值对
for key, value in student.items():
    print(f"{key}: {value}")
 

字典遍历可通过 keys() 、 values() 、 items() 方法分别获取键、值、键值对,其中 items() 返回的元组需使用两个变量接收。

 

2. range()函数的深度应用

 

 range() 函数用于生成整数序列,其语法有三种形式:

 

① range(stop) :生成从0到 stop-1 的整数序列

② range(start, stop) :生成从 start 到 stop-1 的整数序列

③ range(start, stop, step) :生成从 start 到 stop-1 ,步长为 step 的整数序列

# 示例1:生成0到9的序列
for i in range(10):
    print(i)

# 示例2:生成10到19的序列
for num in range(10, 20):
    print(num)

# 示例3:生成1到10中的奇数
for odd in range(1, 11, 2):
    print(odd)
 

 range() 常与 for 循环结合实现固定次数的循环,例如循环打印列表元素的索引:

names = ["Bob", "Eve", "Charlie"]
for index in range(len(names)):
    print(f"索引 {index}: {names[index]}")

 3. 嵌套for循环

 

当处理多维数据(如矩阵、表格)时,需使用嵌套 for 循环:

matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]
for row in matrix:
    for element in row:
        print(element, end=" ")
    print()  # 换行

外层循环遍历行,内层循环遍历每行的元素,最终输出二维矩阵。

 

二、while循环:条件驱动的循环控制

 

 while 循环通过判断条件表达式的真假决定是否执行循环体,只要条件为 True ,循环就会持续运行。其语法如下:

 

while 条件表达式:

    循环体语句

1. 基础使用场景

count = 0
while count < 5:
    print(count)
    count += 1

上述代码中, count 初始值为0,每次循环检查 count < 5 是否成立,若成立则执行循环体并更新 count ,直到条件不满足时退出循环。

 

2. 无限循环与控制语句

 

无限循环

 

通过设置恒为 True 的条件可创建无限循环,需搭配 break 手动终止:

while True:
    user_input = input("输入q退出: ")
    if user_input == "q":
        break

break与continue

 

① break :立即终止整个循环,跳出循环体

② continue :跳过当前循环剩余语句,直接进入下一次循环

for num in range(10):
    if num % 3 == 0:
        continue  # 跳过3的倍数
    if num == 7:
        break  # 遇到7时终止循环
    print(num)

3. while循环的典型应用

 

猜数字游戏

import random
target = random.randint(1, 100)
guess = 0
while guess != target:
    guess = int(input("猜一个1到100的数字: "))
    if guess < target:
        print("太小了!")
    elif guess > target:
        print("太大了!")
print("猜对了!")

该程序通过 while 循环持续接收用户输入,直到猜中随机生成的数字。

 

三、循环中的else子句

 

Python的 for 和 while 循环支持 else 子句,其执行逻辑较为特殊:当循环未被 break 中断,正常结束时, else 子句才会执行。

# for循环示例
for num in range(3):
    if num == 10:
        break
else:
    print("for循环正常结束")

# while循环示例
count = 0
while count < 3:
    print(count)
    count += 1
else:
    print("while循环正常结束")

else 子句常用于简化代码逻辑,避免使用额外的标志位判断循环是否成功执行。

 

四、循环使用中的常见问题与解决方案

 

1. 死循环陷阱

 

死循环通常由以下原因导致:

 

①条件表达式永远为 True (如 while 1: )

②循环变量未正确更新

# 错误示例:死循环
count = 0
while count < 5:
    print(count)
    # 缺少count += 1,导致count始终为0

# 正确修复
count = 0
while count < 5:
    print(count)
    count += 1

2. 嵌套循环性能优化

 

过多的嵌套会导致时间复杂度呈指数级增长。例如,双重循环遍历两个列表的所有组合:

list_a = [1, 2, 3]
list_b = [4, 5, 6]
# 低效方式
result = []
for x in list_a:
    for y in list_b:
        result.append(x * y)

# 高效方式:使用列表推导式
result = [x * y for x in list_a for y in list_b]

列表推导式、生成器表达式以及 map() 、 filter() 等函数可显著提升代码效率。

 

3. 循环变量作用域

 

在Python中, for 和 while 循环内定义的变量在循环结束后仍可访问,需注意变量覆盖风险:

for i in range(5):
    pass
print(i)  # 输出4,i在循环外依然存在

# 可能的问题:意外覆盖变量
total = 10
for total in range(3):  # 覆盖了外层的total变量
    print(total)

五、总结

 

 for 循环和 while 循环是Python编程的基础核心,二者相辅相成:

 

① for 循环适用于已知迭代次数或遍历可迭代对象的场景

② while 循环更擅长处理条件驱动、不确定循环次数的任务

 

熟练掌握 break 、 continue 和 else 子句,结合数据结构与内置函数,能够帮助开发者编写出简洁高效的代码。通过不断实践,循环结构将成为自动化脚本、算法实现、数据分析等领域的强大武器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玉笥寻珍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值