最重要的控制流部分是语句本身。 语句代表了在流程图中看到的菱形,它们是程序将做出的实际决定。
if
语句
最常见的控制流语句是if语句。if
语句的子句(也就是紧跟 if
语句的语句块),
将在语句的条件为 True
时执行。如果条件为 False
,子句将跳过。
在英文中, if
语句念起来可能是:“如果条件为真,执行子句中的代码。”。
在 Python 中, if
语句包含以下部分:
if
关键字;- 条件(即求值为
True
或False
的表达式); - 冒号;
- 在下一行开始,缩进的代码块(称为
if
子句)。
例如,假定有一些代码,检查某人的名字是否为 Alice
(假设此前曾为name
赋值)。
name ='Alice'
age =12
if name == 'Alice':
print('Hi, Alice.')
Hi, Alice.
所有控制流语句都以冒号结尾,后面跟着一个新的代码块(子句)。
语句的 if
子句是代码块,包含 print('Hi,Alice.’)
。
else
语句
if
子句后面有时候也可以跟着 else
语句。只有 if
语句的条件为 False
时,
else
子句才会执行。在英语中, else
语句读起来可能是:“如果条件为真,执行这段代码。
否则,执行那段代码”。 else
语句不包含条件,
在代码中, else
语句中包含下面部分:
else
关键字;- 冒号;
- 在下一行开始,缩进的代码块(称为
else
子句)。
回到 Alice
的例子,看看使用 else
语句的一些代码,
在名字不是 Alice
时,提供不一样的问候。
name ='Alice'
if name == 'Alice':
print('Hi, Alice.')
Hi, Alice.
if name == 'Alice':
print('Hi, Alice.')
elif age < 12:
print('You are not Alice, kiddo.')
Hi, Alice.
这一次,检查此人的年龄。如果比12岁小,就告诉他一些不同的东西。
如果 age <12
为 True
并且 name
==
'Alice'
为 False
,elif
子句就会执行。
但是,如果两个条件都为 False
,那么两个子句都会跳过。
“不能”保证至少有一个子句会被执行。如果有一系列的 elif
语句,仅有一条或零条子句会被执行。
一旦一个语句的条件为 Tme
,剩下的 elif
子句会自动跳过。
例如,打开一个新的文件编辑器窗口,输入以下代码,保存为 vampire.py
。
if name == 'Alice':
print('Hi, Alice.')
elif age < 12:
print('You are not Alice, kiddo.')
elif age > 2000:
print( 'Unlike you, Alice is not an undead, immortal vampire.')
elif age > 100:
print('You are not Alice, grannie.')
Hi, Alice.
这里添加了另外两条 elif
语句,让名字检查程序根据 age
的不同答案而改变。
但是,elif
语句的次序确实重要。现在重新排序,引入一个缺陷。回忆一下,
一旦找到一个 True
条件,剩余的子句就会自动跳过。
if name == 'Alice':
print('Hi, Alice.')
elif age < 12:
print('You are not Alice, kiddo.')
elif age > 100:
print('You are not Alice, grannie.')
elif age > 2000:
print('Unlike you, Alice is not an undead, immortal vampire.')
Hi, Alice.
假设在这段代码执行之前, age
变量的值是3000。
可能预计代码会打印出字符串 'Unlike you, Alice is not an undead, immortal vampire.'
。
但是,因为 age > 100
条 件为真(毕竟3000大于100),
字符串 'You are notAlice,grannie.'
被打印出来,
剩下的语句自动跳过。别忘了,最多只有一个子句会执行,
对于 dif
语句,次序是很重要的。
可选择在最后的 elif
语句后面加上 else
语句。在这种情况下,
保证至少一个子句(且只有一个)会执行。如果每个 if
和 elif
语句中的条件都为 False
,
就执行 else
子句。例如,使用 if
、 elif
和 else
子句重新编写 Alicee
程序。
if name == 'Alice':
print('Hi, Alice. ')
elif age < 12:
print('You are not Alice, kiddo.')
else:
print('You are neither Alice nor a little kid.')
Hi, Alice.
在英语中,这类控制流结构会使得:“如果第一个条件为真,做这个。否则, 如果第二个条件为真,做那个。否则,做另外的事。” 如果同时使用这3个语句,要记住这些次序规则。
- 首先,总是只有一个
if
语句。所有需要的elif
语句都应该跟在if
语句之后。 - 其次,如果希望确保至少一条子句被执行,在最后加上
else
语句。