>>> from env_helper import info; info()
页面更新时间: 2021-08-29 22:03:56
运行环境:
Linux发行版本: Debian GNU/Linux 11 (bullseye)
操作系统内核: Linux-5.10.0-8-amd64-x86_64-with-glibc2.31
Python版本: 3.9.2
2.5. 控制流的元素¶
控制流语句的开始部分通常是“条件”,接下来是一个代码块,称为“子句”。 在开始学习具体的Python控制流语句之前,我将介绍条件和代码块。
2.5.1. 条件¶
你前面看到的布尔表达式可以看成是条件,它和表达式是一回事。“条件”只是在
控制流语句的上下文中更具体的名称。条件总是求值为一个布尔值, True
或
False
。控制 流语句根据条件是 True
还是 False
,来决定做什么。几乎所有的控制流语句都使用条件。
2.5.2. 代码块¶
一些代码行可以作为一组,放在“代码块”中。可以根据代码行的缩进,知道 代码块的开始和结束。代码块有3条规则。
缩进增加时,代码块开始。
代码块可以包含其他代码块。
缩进减少为零,或减少为外面包围代码块的缩进,代码块就结束了。
看一些有缩进的代码,更容易理解代码块。 所以让我们在一小段游戏程序中,寻找代码块,如下所示:
>>> name=""
>>> password=""
>>> if name == 'Mary':
>>> print('Hello Mary')
>>> if password == 'swordfish':
>>> print('Access granted.')
>>> else:
>>> print('Wrong password.')
Wrong password.
第一个代码块开始于代码行 print('Hello Mary')
,并且包含后面所有的行。在 这个代码块中有另一个代码块,它只有一行代码:
print('AccessGranted.')
。 第三个 代码块也只有一行:
print('Wrong password.')
。
2.5.3. 程序执行¶
在程序中,Python开始执行程序顶部的指令,然后一条接一条往下执行。 “程序执行”(或简称“执行”)这一术语是指当前被执行的指令。 如果将源代码打印在纸上,在它执行时用手指指着每一行代码,你可以认为手指就是程序执行。
但是,并非所有的程序都是从上至下简单地执行。 如果用手指追踪一个带有控制流语句的程序,可能会发现手指会根据条件跳过源代码,有可能跳过整个子句。
2.5.4. 代码块嵌套¶
下面穿插点额外的内容。你可将if语句放在其他if语句块中,如下所示:
>>> name = input('What is your name? ')
>>> if name.endswith('Gumby'):
>>> if name.startswith('Mr.'):
>>> print('Hello, Mr. Gumby')
>>>
>>> elif name.startswith('Mrs.'):
>>> print('Hello, Mrs. Gumby')
>>>
>>> else:
>>> print('Hello, Gumby')
>>> else:
>>> print('Hello, stranger')
What is your name? Tome
Hello, stranger
在这里,如果名字以Gumby结尾,就同时检查名字开头,这是在第一个代码块中使用一条独立的
if
语句完成的。 请注意,这里还使用了 elif
。
最后一个分支(else子句)没有指定条件——
如果没有选择其他分支,就选择最后一个分支。 如果需要,这里的两个 else
子句都可省略。
如果省略里面的else子句,将忽略并非以Mr.或Mrs.打头的名字(假设名字为Gumby)。
如果省略外面的else子句,将忽略陌生人。