1. 循环结构概述
循环结构让程序能够重复执行某段代码,直到条件不满足为止。Python 提供了两种循环:
- while 循环:适合循环次数不确定的场景("满足条件就继续")
- for-in 循环:适合循环次数确定或遍历序列的场景
2. while 循环
while 循环的基本结构:条件为 True 时持续执行循环体,条件为 False 时退出。
Python
while 条件表达式:
# 循环体(条件为真时重复执行的代码)
else:
# 可选部分,当循环正常结束时执行(非 break 退出)
注意:循环体中必须有更新条件变量的语句,否则会形成无限循环(死循环)!
Python
# 重复输出10次
i = 0
while i < 10:
print("我爱Python")
i = i + 1 # 别忘了更新条件变量!
# 输出1到5的数字
i = 1
while i <= 5:
print(i)
i += 1
3. for-in 循环
如果明确知道循环执行次数,推荐使用 for-in 循环。循环变量会依次取出序列中的每个值。
Python
# 从0循环到99,共循环100次
for i in range(100):
print(i)
4. range() 函数
range() 函数用于产生一个整数范围,常与 for-in 配合使用。
| 写法 | 产生范围 | 说明 |
|---|---|---|
range(100) | 0 ~ 99 | 从0开始,不包含100 |
range(1, 101) | 1 ~ 100 | 左闭右开 [1, 101) |
range(1, 101, 2) | 1 3 5 … 99 | 步长为2,所有奇数 |
range(100, 0, -2) | 100 98 … 2 | 步长-2,从大到小 |
Python
# 计算 1+2+3+...+100 的和
total = 0
for i in range(1, 101):
total += i
print(total) # 5050
# 更简洁的写法(内置函数 sum)
print(sum(range(1, 101))) # 5050
# 1到100的偶数之和
print(sum(range(2, 101, 2))) # 2550
5. break / continue / pass
| 关键字 | 作用 |
|---|---|
break | 立即终止整个循环,跳出循环体 |
continue | 跳过本次循环剩余语句,直接进入下一次循环 |
pass | 空语句,什么也不做,保持程序结构完整性 |
Python
i = 0
while i < 10:
i += 1
if i == 5:
continue # 跳过5,继续执行
print(i) # 输出 1 2 3 4 6 7 8 9 10(跳过了5)
6. 嵌套循环
循环结构中可以包含另一个循环,外层循环每执行一次,内层循环会完整执行一轮。
九九乘法表
Python
for i in range(1, 10):
for j in range(1, i + 1):
print(f'{i}×{j}={i * j}', end='\t')
print() # 每行结束换行
7. 循环的典型应用
判断素数
素数:只能被1和自身整除的大于1的整数。优化:循环只需到 √n 即可。
Python
num = int(input('请输入一个正整数: '))
end = int(num ** 0.5)
is_prime = True
for i in range(2, end + 1):
if num % i == 0:
is_prime = False
break
if is_prime:
print(f'{num}是素数')
else:
print(f'{num}不是素数')
最大公约数(欧几里得算法)
欧几里得算法(辗转相除法)比逐一遍历高效得多:
Python
x = int(input('x = '))
y = int(input('y = '))
while y % x != 0:
x, y = y % x, x # 每次用余数替换较大的数
print(f'最大公约数: {x}')
猜数字游戏
Python
import random
answer = random.randint(1, 100)
counter = 0
while True:
counter += 1
guess = int(input('猜一猜(1-100): '))
if guess < answer:
print('猜小了')
elif guess > answer:
print('猜大了')
else:
print(f'恭喜你,猜对了!共猜了{counter}次')
break