了解Python控制流语句——if语句
控制流
截止到现在,在我们所看过的程序中,总是有一系列语句从上到下精确排列,并交由 Python 忠实地执行。如果你想改变这一工作流程,应该怎么做?就像这样的情况:你需要程序作出一些决定,并依据不同的情况去完成不同的事情,例如依据每天时间的不同打印出 '早上好' 'Good Morning' 或 '晚上好' 'Good Evening'?
正如你可能已经猜测到的那番,这是通过控制流语句来实现的。在 Python 中有三种控制流语句——if、
for
和 while
。
if
语句
python if 语句用以检查条件:如果 条件为真(True),我们将运行一块语句(称作 if-block 或 if 块),否则 我们将运行另一块语句(称作 else-block 或 else 块)。其中 else 从句是可选的。
案例(保存为 if.py
):
number = 23 guess = int(input('Enter an integer : ')) if guess == number: # 新块从这里开始 print('Congratulations, you guessed it.') print('(but you do not win any prizes!)') # 新块在这里结束 elif guess < number: # 另一代码块 print('No, it is a little higher than that') # 你可以在此做任何你希望在该代码块内进行的事情 else: print('No, it is a little lower than that') # 你必须通过猜测一个大于(>)设置数的数字来到达这里。 print('Done') # 这最后一句语句将在 # if 语句执行完毕后执行。
输出:
$ python if.py Enter an integer : 50 No, it is a little lower than that Done $ python if.py Enter an integer : 22 No, it is a little higher than that Done $ python if.py Enter an integer : 23 Congratulations, you guessed it. (but you do not win any prizes!) Done
它是如何工作的
在这个程序中,我们根据用户猜测的数字来检查这一数字是否是我们所设置的。我们将变量 number
设为任何我们所希望的整数,例如 23
。然后,我们通过 input()
函数来获取用户的猜测数。所谓函数是一种可重复使用的程序。我们将在下一章python教程中详细讨论它。
我们为内置的 input
函数提供一串打印到屏幕上的字符串并等待用户的输入。一旦我们输入了某些内容并按下键盘上的 enter
键,input()
函数将以字符串的形式返回我们所输入的内容。然后我们通过 int
将这个字符串转换成一个整数并将其储存在变量 guess
中。实际上,int
是一个类(Class),但你现在你所需要知道的就是你可以使用它将一串字符串转换成一个整数(假设这个字符串的文本中含有一个有效的整数)。
接下来,我们将用户提供的猜测数与我们所选择的数字进行对比。如果它们相等,我们就打印一条成功信息。在这里要注意到我们使用缩进级别来告诉 Python 哪些语句分别属于哪个块。这便是为什么在 Python 中缩进如此重要。我希望你能够坚持“缩进一致”的原则,你能做到吧?
另外需要注意的是 if
语句在结尾处包含一个冒号——我们借此向 Python 指定接下来会有一块语句在后头。
然后,我们检查猜测数是否小于我们选择的数字,如果是,我们将告诉用户他们必须猜一个更高一些的数字。在这里我们使用的是 elif
语句,它们实际上将两个相连的 if else-if else
语句合并成一句 if-elif-else
语句。这能够使程序更加简便,并且可以减少所需要的缩进量。
elif
和 else
同样都必须有一个冒号在其逻辑行的末尾,后面跟着与它们相应的语句块(当然,别忘了恰当的缩进)。
你可以在 if 块的 一个 if
语句中设置另一个 if
语句,并可以如此进行下去——这被称作嵌套的 if
语句。
要记住 elif
和 else
部分都是可选的。一个最小规模且有效的 if
语句是这样的:
if True: print('Yes, it is true')
当 Python 完整执行了 if
语句及与其相关的 elif
和 else
子句后,它将会移动至包含 if
语句的代码块的下一句语句中。在本例中,也就是主代码块(程序开始执行的地方),其下一句语句就是 print('Done')
语句。在完成这些工作后,Python 会发现已行至程序末尾并宣告工作的完成。
尽管这是一个非常简单的程序,我也一直在其中指出你应该注意的事情。所有的这些都可算是简单易懂(对于那些具有 C/C++ 背景的人来说是相当简单易懂)。不过在开始时它们还是可能会不断吸引你的注意,不断地去在意它们。但经过一些更丰富的操作后你就会习惯它们及其中的逻辑,它们对于你来说将会成为“自然而然”的事情。
针对 C/C++ 程序员的提示
Python 中不存在
switch
语句。你可以通过使用if..elif..else
语句来实现同样的事情(在某些情况下,使用一部字典能够更快速地完成)。