>>> from env_helper import info; info()
页面更新时间: 2020-11-19 20:18:58
操作系统/OS: Linux-4.19.0-11-amd64-x86_64-with-debian-10.6 ;Python: 3.7.3
2.6. 控制流语句¶
现在,让我们来看最重要的控制流部分:语句本身。 语句代表了在流程图中看到的菱形,它们是程序将做出的实际决定。
2.6.1. 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.’) 。
2.6.2. else 语句¶
if 子句后面有时候也可以跟着 else 语句。只有 if 语句的条件为
False 时, else 子句才会执行。在英语中, else
语句读起来可能是:“如果条件为真,执行这段 代码。否则,执行那段代码”。
else 语句不包含条件,在代码中, else 语句中包 含下面部分:
else关键字;冒号;
在下一行开始,缩进的代码块(称为
else子句)。
回到 Alice 的例子,我们来看看使用 else 语句的一些代码,
在名字不是 Alice 时,提供不一样的问候。
>>> name ='Alice'
>>> if name == 'Alice':
>>> print('Hi, Alice.')
Hi, Alice.
2.6.3. elif 语句¶
虽然只有 if 或 else
子句会被执行,但有时候可能你希望,“许多”可能的子句 中有一个被执行。
elif 语句是“否则如果”,总是跟在if或另一条 elif 语句后面。它
提供了另一个条件,仅在前面的条件为 False 时才检查该条件。在代码中,
elif 语句 总是包含以下部分:
elif关键字;条件(即求值为
True或False的表达式);冒号;
在下一行开始,缩进的代码块(称为
elif子句)。 让我们在名字检查程序中添加elif,看看这个语句的效果。
>>> 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语句。