Appearance
第7章:循环语句
7.1 while循环
while循环是一种条件循环,当条件成立时,会重复执行代码块,直到条件不成立为止。
语法
python
while 条件:
# 条件成立时执行的代码块
代码1
代码2
...核心
- 循环条件:循环的关键,决定了循环是否继续执行
- 避免死循环:确保循环条件最终会变为False,否则循环会无限执行
示例
python
# 打印1-10的数字
count = 1
while count <= 10:
print(count)
count += 1 # 重要:必须修改计数器,否则会导致死循环
# 实现简单计数器
number = 5
while number > 0:
print(f"倒计时:{number}")
number -= 1
print("倒计时结束!")
# 用户重复输入直到正确
correct_answer = "Python"
while True:
answer = input("请输入Python的正确拼写:")
if answer == correct_answer:
print("回答正确!")
break # 跳出循环
else:
print("回答错误,请重试。")运行结果
1
2
3
4
5
6
7
8
9
10
倒计时:5
倒计时:4
倒计时:3
倒计时:2
倒计时:1
倒计时结束!
请输入Python的正确拼写:python
回答错误,请重试。
请输入Python的正确拼写:Python
回答正确!7.2 for循环
for循环是一种遍历循环,用于遍历可遍历对象(如字符串、列表、元组、字典等)。
语法
python
for 变量 in 可遍历对象:
# 对每个元素执行的代码块
代码1
代码2
...可遍历对象
- 字符串:遍历每个字符
- 列表:遍历每个元素
- 元组:遍历每个元素
- 字典:默认遍历键,也可以遍历值或键值对
- range()函数:生成指定范围的数字
range()函数
- 语法:
range(start, stop, step) - 参数:
start:起始值(默认为0)stop:结束值(不包含)step:步长(默认为1)
- 示例:
range(10):生成0-9的数字range(1, 10):生成1-9的数字range(1, 10, 2):生成1, 3, 5, 7, 9
示例
python
# 遍历字符串
word = "Python"
for char in word:
print(char)
# 遍历列表
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(f"我喜欢吃{fruit}")
# 打印1-100的数字
for i in range(1, 101):
print(i)
# 批量处理数据
numbers = [1, 2, 3, 4, 5]
squared_numbers = []
for num in numbers:
squared_numbers.append(num ** 2)
print(f"原始数据:{numbers}")
print(f"平方后:{squared_numbers}")
# 遍历字典
person = {"name": "zhangsan", "age": 18, "gender": "male"}
print("遍历键:")
for key in person:
print(key)
print("遍历键值对:")
for key, value in person.items():
print(f"{key}: {value}")运行结果
P
y
t
h
o
n
我喜欢吃apple
我喜欢吃banana
我喜欢吃cherry
1
2
...
100
原始数据:[1, 2, 3, 4, 5]
平方后:[1, 4, 9, 16, 25]
遍历键:
name
age
gender
遍历键值对:
name: zhangsan
age: 18
gender: male7.3 循环控制语句
循环控制语句用于控制循环的执行流程,包括break和continue。
break语句
- 作用:跳出整个循环,不再执行循环中的后续代码
- 应用场景:当找到目标数据后停止循环,或满足某个条件时提前结束循环
continue语句
- 作用:跳过当前循环的剩余代码,进入下一次循环
- 应用场景:跳过不符合条件的数据,只处理符合条件的数据
示例
python
# 遍历数字,跳过偶数
for i in range(1, 11):
if i % 2 == 0:
continue # 跳过偶数
print(i)
# 找到指定数字后停止循环
numbers = [5, 10, 15, 20, 25]
target = 15
for num in numbers:
if num == target:
print(f"找到目标数字:{num}")
break # 找到后停止循环
print(f"当前数字:{num}")
# 结合while循环使用
count = 0
while count < 10:
count += 1
if count % 3 == 0:
continue # 跳过能被3整除的数
if count == 8:
break # 当count等于8时停止循环
print(count)运行结果
1
3
5
7
9
当前数字:5
当前数字:10
找到目标数字:15
1
2
4
5
77.4 循环嵌套
循环嵌套是指在一个循环内部再使用另一个循环,用于处理更复杂的问题。
语法
python
# 外层循环
for 变量1 in 可遍历对象1:
# 内层循环
for 变量2 in 可遍历对象2:
# 代码块
代码1
代码2
...示例
python
# 打印九九乘法表
print("九九乘法表:")
for i in range(1, 10):
for j in range(1, i + 1):
print(f"{j} × {i} = {i * j}", end="\t")
print() # 换行
# 打印三角形
rows = 5
for i in range(1, rows + 1):
for j in range(1, i + 1):
print("*")
print()运行结果
九九乘法表:
1 × 1 = 1
1 × 2 = 2 2 × 2 = 4
1 × 3 = 3 2 × 3 = 6 3 × 3 = 9
1 × 4 = 4 2 × 4 = 8 3 × 4 = 12 4 × 4 = 16
1 × 5 = 5 2 × 5 = 10 3 × 5 = 15 4 × 5 = 20 5 × 5 = 25
1 × 6 = 6 2 × 6 = 12 3 × 6 = 18 4 × 6 = 24 5 × 6 = 30 6 × 6 = 36
1 × 7 = 7 2 × 7 = 14 3 × 7 = 21 4 × 7 = 28 5 × 7 = 35 6 × 7 = 42 7 × 7 = 49
1 × 8 = 8 2 × 8 = 16 3 × 8 = 24 4 × 8 = 32 5 × 8 = 40 6 × 8 = 48 7 × 8 = 56 8 × 8 = 64
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
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*实操案例:九九乘法表
案例:九九乘法表
python
"""
九九乘法表
功能:打印出完整的九九乘法表
"""
print("\n===== 九九乘法表 =====\n")
# 外层循环控制行数
for i in range(1, 10):
# 内层循环控制每行的列数
for j in range(1, i + 1):
# 计算乘积
product = i * j
# 打印乘法表达式,使用end参数控制不换行
print(f"{j} × {i} = {product:2d}", end="\t")
# 每行结束后换行
print()
print("\n====================\n")运行结果
===== 九九乘法表 =====
1 × 1 = 1
1 × 2 = 2 2 × 2 = 4
1 × 3 = 3 2 × 3 = 6 3 × 3 = 9
1 × 4 = 4 2 × 4 = 8 3 × 4 = 12 4 × 4 = 16
1 × 5 = 5 2 × 5 = 10 3 × 5 = 15 4 × 5 = 20 5 × 5 = 25
1 × 6 = 6 2 × 6 = 12 3 × 6 = 18 4 × 6 = 24 5 × 6 = 30 6 × 6 = 36
1 × 7 = 7 2 × 7 = 14 3 × 7 = 21 4 × 7 = 28 5 × 7 = 35 6 × 7 = 42 7 × 7 = 49
1 × 8 = 8 2 × 8 = 16 3 × 8 = 24 4 × 8 = 32 5 × 8 = 40 6 × 8 = 48 7 × 8 = 56 8 × 8 = 64
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
====================实操案例:猜数字游戏
案例:猜数字游戏
python
"""
猜数字游戏
功能:计算机随机生成一个1-100的数字,用户猜测,直到猜对为止
"""
import random
# 生成1-100的随机数
secret_number = random.randint(1, 100)
guess_count = 0
max_guesses = 10
print("===== 猜数字游戏 =====")
print("我已经想好了一个1-100之间的数字,你有10次机会来猜测。")
# 循环猜测
while guess_count < max_guesses:
# 获取用户输入
guess = int(input("请输入你的猜测:"))
guess_count += 1
# 判断猜测是否正确
if guess < secret_number:
print(f"太小了!你还有{max_guesses - guess_count}次机会。")
elif guess > secret_number:
print(f"太大了!你还有{max_guesses - guess_count}次机会。")
else:
print(f"恭喜你!猜对了!你用了{guess_count}次机会。")
break
# 次数用完
if guess_count == max_guesses:
print(f"很遗憾,你没有猜对。我想的数字是{secret_number}。")
print("游戏结束!")运行结果
===== 猜数字游戏 =====
我已经想好了一个1-100之间的数字,你有10次机会来猜测。
请输入你的猜测:50
太大了!你还有9次机会。
请输入你的猜测:25
太小了!你还有8次机会。
请输入你的猜测:37
太大了!你还有7次机会。
请输入你的猜测:31
太小了!你还有6次机会。
请输入你的猜测:34
恭喜你!猜对了!你用了5次机会。
游戏结束!新手易错点
死循环:循环条件永远成立,导致循环无限执行
python# 错误示例 count = 1 while count <= 10: print(count) # 缺少count += 1,导致死循环循环嵌套缩进错误:内层循环的缩进必须正确
python# 错误示例 for i in range(3): print(i) # 错误:缺少缩进 for j in range(2): print(j) # 错误:缩进不一致break/continue使用场景混淆:break用于跳出整个循环,continue用于跳过当前循环
python# 正确使用 for i in range(10): if i == 5: break # 跳出整个循环 print(i) # 正确使用 for i in range(10): if i % 2 == 0: continue # 跳过当前循环 print(i)
通过本章的学习,你已经掌握了Python的循环语句,包括while循环、for循环、循环控制语句和循环嵌套。这些是Python编程中非常重要的控制结构,用于重复执行代码块。在实际编程中,你会经常用到这些循环语句来处理各种需要重复操作的问题,如遍历数据、批量处理、游戏逻辑等。
