第5节:流程控制语句
到目前为止,我们写的 Python 代码都是从上到下一行接一行地执行。但真实的程序往往需要根据不同的情况做出不同的反应,或者重复执行某些任务。这就需要用到流程控制语句,本节主要讲解条件语句和循环语句。
1. 让程序做选择:条件语句
条件语句允许程序根据某个条件是否满足 (是 True
还是 False
) 来决定执行哪段代码。最常用的条件语句是 if
、elif
和 else
。
if
语句:满足条件才执行
if
语句是最基本的条件判断。它检查紧跟在 if
后面的条件表达式。如果条件为 True
,就执行 if
下方缩进的代码块;如果条件为 False
,就跳过这段缩进的代码块。
语法:
if 条件表达式:
# 条件为 True 时执行的代码块 (必须缩进!)
语句1
语句2
...
## 这里是不受 if 控制的代码 (没有缩进)
重要:
条件表达式
通常是一个结果为布尔值 (True
或False
) 的表达式,比如比较运算 (age > 18
) 或逻辑运算 (score >= 60 and score <= 100
)。- 条件表达式后面必须有冒号
:
。 if
下方的代码块必须缩进 (通常是 4 个空格),表示这部分代码属于if
语句。
示例:
age = 20
if age >= 18:
print("您已成年。") # 条件 age >= 18 为 True,所以这行会执行
print("程序继续执行...") # 这行没有缩进,总会执行
temperature = 15
if temperature < 10:
print("天气寒冷,请多穿衣服。") # 条件为 False,这行不会执行
if-else
语句:两种选择
if-else
语句提供了一种二选一的逻辑:如果 if
的条件为 True
,执行 if
下方的代码块;否则 (即条件为 False
时),执行 else
下方的代码块。
语法:
if 条件表达式:
# 条件为 True 时执行的代码块
语句1
else:
# 条件为 False 时执行的代码块 (else下方也要缩进!)
语句2
示例:
score = 75
if score >= 60:
print("恭喜,及格了!") # 条件为 True,执行这里
else:
print("很遗憾,需要继续努力。")
## ---
light_is_on = False
if light_is_on == True: # 或者可以直接写 if light_is_on:
print("灯是开着的。")
else:
print("灯是关着的。") # 条件为 False,执行这里
if-elif-else
语句:多种选择
当有多个条件需要判断时(超过两种情况),可以使用 if-elif-else
结构。elif
是 "else if" 的缩写。程序会从上到下依次检查 if
和 elif
的条件:
- 如果
if
条件为True
,执行其代码块,然后整个结构结束。 - 如果
if
条件为False
,检查第一个elif
的条件。如果为True
,执行其代码块,然后整个结构结束。 - 如果第一个
elif
也为False
,检查下一个elif
... - 如果所有的
if
和elif
条件都为False
,则执行else
下方的代码块(else
是可选的)。
语法:
if 条件1:
# 条件1 为 True 时执行
语句块1
elif 条件2:
# 条件1 为 False,条件2 为 True 时执行
语句块2
elif 条件3:
# 条件1、2 为 False,条件3 为 True 时执行
语句块3
## ... 可以有更多 elif
else:
# 以上所有条件都为 False 时执行 (可选)
语句块N
示例:
grade = 85
if grade >= 90:
print("优秀")
elif grade >= 80: # grade >= 90 不满足,检查这个 (85 >= 80 为 True)
print("良好") # 执行这里,然后结束
elif grade >= 60:
print("及格")
else:
print("不及格")
## ---
day = "Sunday"
if day == "Saturday":
print("今天是周六,休息!")
elif day == "Sunday":
print("今天是周日,也休息!") # 执行这里
else:
print("今天需要工作/学习。")
条件嵌套
if
语句内部还可以包含其他的 if
语句,形成嵌套结构,用于处理更复杂的逻辑。
age = 25
has_ticket = True
if age >= 18:
print("已成年。")
if has_ticket == True:
print("可以入场。") # 嵌套的 if
else:
print("需要购票才能入场。") # 嵌套的 else
else:
print("未成年,不能入场。")
注意:嵌套层数不宜过多,否则代码会变得难以理解。
2. 重复执行任务:循环语句
循环语句允许程序重复执行某段代码块,直到满足某个退出条件。Python 主要有两种循环:for
循环和 while
循环。
for
循环:遍历序列
for
循环通常用于遍历一个序列 (Sequence) 中的每个元素,比如列表、字符串或其他可迭代的对象。它会依次取出序列中的每个元素,并执行循环体内的代码。
语法:
for 临时变量 in 可迭代对象:
# 对每个元素执行的代码块 (必须缩进!)
语句1
语句2
# 在这里可以使用 临时变量
可迭代对象
:可以是列表、字符串等。临时变量
:每次循环时,序列中的当前元素会被赋值给这个变量。你可以自己给它命名。
示例:遍历列表
fruits = ["apple", "banana", "cherry"]
for fruit in fruits: # 依次取出 "apple", "banana", "cherry" 赋值给 fruit
print("我喜欢吃 " + fruit)
## 输出:
## 我喜欢吃 apple
## 我喜欢吃 banana
## 我喜欢吃 cherry
示例:遍历字符串
message = "Hello"
for char in message: # 依次取出 "H", "e", "l", "l", "o" 赋值给 char
print(char)
## 输出:
## H
## e
## l
## l
## o
range()
函数:生成数字序列
如果想让代码重复固定次数,经常配合 range()
函数使用 for
循环。range()
可以生成一个整数序列。
range(结束值)
:生成从 0 到结束值-1
的整数序列。range(起始值, 结束值)
:生成从起始值
到结束值-1
的整数序列。range(起始值, 结束值, 步长)
:生成从起始值
开始,每次增加步长
,直到结束值-1
的序列。
## 打印 0 到 4
for i in range(5): # range(5) 生成 0, 1, 2, 3, 4
print(i)
print("---")
## 打印 1 到 5
for i in range(1, 6): # range(1, 6) 生成 1, 2, 3, 4, 5
print(i)
print("---")
## 打印 0 到 10 之间的偶数
for i in range(0, 11, 2): # range(0, 11, 2) 生成 0, 2, 4, 6, 8, 10
print(i)
while
循环:当条件为真时持续执行
while
循环会在其后的条件表达式为 True
时,持续执行循环体内的代码块。每次执行完循环体后,会重新检查条件表达式。直到条件变为 False
时,循环才会结束。
语法:
while 条件表达式:
# 条件为 True 时执行的代码块 (必须缩进!)
语句1
语句2
# 重要:通常需要在这里更新与条件相关的变量,否则可能导致无限循环!
示例:
count = 0
while count < 5: # 条件 count < 5
print("Count is:", count)
count = count + 1 # 或者 count += 1,更新条件变量
print("循环结束")
## 输出:
## Count is: 0
## Count is: 1
## Count is: 2
## Count is: 3
## Count is: 4
## 循环结束
重要: 使用 while
循环时,必须确保循环体内部有代码能最终让 条件表达式
变为 False
,否则就会陷入无限循环 (Infinite Loop),程序会一直运行下去,需要手动停止。
循环中的 break
和 continue
(可选)
break
: 立刻跳出整个循环(for
或while
),执行循环后面的代码。continue
: 立刻结束当前这次循环,跳过本次循环中continue
后面的语句,直接开始下一次循环。
## break 示例: 找到第一个大于 5 的数就停止
numbers = [1, 3, 7, 2, 9, 4]
for num in numbers:
if num > 5:
print("找到大于 5 的数:", num)
break # 跳出整个 for 循环
print("当前数字:", num)
## continue 示例: 只打印偶数
for i in range(1, 11):
if i % 2 != 0: # 如果 i 是奇数
continue # 跳过本次循环,不执行下面的 print
print("偶数:", i)
3. 练习
- 编写一个程序,判断一个变量
score
的值:如果大于等于 90,打印 "A";如果大于等于 80 小于 90,打印 "B";如果大于等于 60 小于 80,打印 "C";否则打印 "D"。 - 使用
for
循环和range()
函数,打印出 1 到 10 的所有数字。 - 创建一个包含几个朋友名字的列表,使用
for
循环向每个朋友打招呼,例如打印 "你好, [朋友名字]!"。 - 使用
while
循环,计算并打印出 1 到 5 的所有整数的和 (1+2+3+4+5)。 - 修改练习 4,如果累加的和超过 10,就使用
break
提前结束循环。
掌握了条件语句和循环语句,你就能编写出更智能、更灵活的程序了。下一章我们将学习如何将代码组织成可重用的块——函数。