【前言】
大家好!在之前的章节中,我们学习了顺序结构和选择结构,程序已经可以按部就班地做判断了。但如果我们要让计算机重复做一件事情1000次,难道要写1000行代码吗?当然不!今天我们来学习Python中非常重要的循环结构。
Python中的循环结构主要分为两类:遍历循环for和无限循环while。掌握这两种循环,你就拥有了让计算机"不知疲倦"工作的能力。
一、遍历循环 for
for循环通常用于遍历序列(如字符串、列表、range对象)。
1. 基本语法
python
for 循环变量 in 遍历对象:
语句块
2. 实战演练

-
场景1:遍历字符串
我们先来看最简单的例子,遍历字符串中的每一个字符。python# 【示例4-9】 for i in 'hello': print(i) -
场景2:使用range()函数
range()函数可以生成一个整数序列,是for循环的最佳搭档。语法为range(start, end, step)。
比如,我们要计算1到10之间所有偶数的和:pythons = 0 for i in range(1, 11): # 产生1到10的整数 if i % 2 == 0: print(i, '是偶数') -
场景3:经典案例------寻找水仙花数
水仙花数是指一个3位数,其各位数字立方和等于该数本身。这是for循环练手的经典案例。pythonfor i in range(100, 1000): sd = i % 10 # 个位 tens = i // 10 % 10 # 十位 hundred = i // 100 # 百位 if sd**3 + tens**3 + hundred**3 == i: print(i)

二、for循环的扩展形式:for...else
else语句在循环结束后执行,但前提是循环没有被break终止(关于break我们下节讲,这里先了解)。
python
# 【示例4-10】
s = 0
for i in range(1, 11):
s += i
else:
print('1-10之间的累加和为:', s)

注意:只有当for循环正常遍历完所有元素后,else里的代码才会执行。
三、无限循环 while
while循环是根据条件来控制的,只要条件为真(True),就一直循环。
1. 基本语法
python
while 表达式:
语句块

2. while循环的四个重要步骤(避免死循环)
在使用while循环时,必须牢记四个步骤,否则程序会陷入"死循环":
- 初始化变量:给循环变量赋初值。
- 条件判断:决定是否进入循环。
- 语句块:执行具体的逻辑。
- 改变变量 :更新循环变量,使条件最终能变为False。
3. 实战演练
-
案例1:计算1-100累加和
python# 【示例4-11】 i = 1 # (1) 初始化变量 s = 0 while i <= 100: # (2) 条件判断 s += i # (3) 语句块 i += 1 # (4) 改变变量(关键!) print('1-100之间的累加和:', s)

-
案例2:模拟用户登录(三次机会)
这是实际开发中非常常见的逻辑:限制尝试次数。python# 【示例4-13】 i = 0 while i < 3: user_name = input('请输入您的用户名:') pwd = input('请输入您的密码:') if user_name == 'ysj' and pwd == '888888': print('系统正在登录,请稍后') break # 登录成功直接退出 else: if i < 2: print('用户名或密码不正确,您还有', 2-i, '次机会') i += 1 if i == 3: print('对不起,三次均输入错')


四、嵌套循环
如果一个循环的循环体中又包含了另一个循环,这就是嵌套循环。嵌套循环常用于处理二维数据(如表格、矩阵)或打印图形。

-
案例:打印九九乘法表(长方形)
外层控制行,内层控制列。python# 【示例4-14】 for i in range(1, 4): for j in range(1, 5): print('*', end='') print() # 换行

-
进阶案例:打印菱形(空心菱形)
使用嵌套循环配合条件判断可以打印出复杂的图形,这对理解逻辑非常有帮助。python# 【示例4-16】菱形 row = eval(input('请输入菱形的行数')) # ... 代码逻辑

【总结】
for循环:适合已知循环次数或遍历序列的情况。while循环:适合根据条件判断循环次数的情况,记得四个步骤!for...else:循环正常结束时执行。- 嵌套循环:外层变一次,内层跑一圈。
下一节我们将学习控制循环跳转的
break和continue,敬请期待!