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