>>> 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
语句。