人工智能基础教程:Python篇(青少版)
上QQ阅读APP看书,第一时间看更新

3.1 条件控制语句

Python中的条件控制语句主要是围绕if语句展开的,下面将根据具体内容详细展开。

3.1.1 理解Python中的条件控制语句

条件控制语句是通过条件表达式的执行结果来决定后续执行代码的,执行的一般流程如图3.1所示。

图3.1 条件控制语句流程图

对于条件表达式,Python指定非0和非空值为True,0或Null为False。接下来看看具体的条件控制语句。

3.1.2 if…else语句

具体语法:

这是一个很好理解的语句,它由4部分组成:关键字本身,用于判断结果真假的条件表达式(expression),条件为真(True)时执行的代码块以及条件为假(False)时执行的代码块。

提示:

(1)多重条件表达式的情况:正如字面意思所说,多重条件表达式就是情况复杂以至于一条if语句的执行是由很多因素决定的。我们可以使用逻辑运算符and、or以及not来组合条件表达式。

(2)if…else结构中的else部分是可选的。有时候我们只需要一个判断成功时的操作,而不需要考虑如果判断不成功的情形,即没有else及其之后的语句。这在实际的程序编写时也是很常用的。

注意:

尽管Python使用的是强制代码正确对齐,这使得在程序中出现不匹配else是不可能的,但是你一定要想好else是属于哪个if,因为要改正程序中的这类错误是很费精力的。

我们都知道在同条件的环境下使用催化剂会加快化学反应速度,在这里仅仅抽取化学实验中是否添加催化剂这个条件,来判断化学反应的速度等级。具体程序如程序3.1所示。

程序3.1 判断化学反应速度等级:

输出:

分析:

程序整体上比较简单,但比较明了地展现了if…else语句在程序中是如何使用的。程序根据输入判断具体执行哪条输出语句。如果我们的输入值为'y'的话,经过第3行的判断语句,程序会转入执行第4行。否则的话,程序将直接执行第6行。程序流程图如图3.2所示。

图3.2 程序流程图

3.1.3 elif语句

具体语法:

elif即else if,其中elif和else一样,声明都是可选。引入这个语句是为了解决有多个条件待选择的情况。假如你要为老师编写一个简单的划分成绩等级的程序,该程序要做到输入分数自动生成对应的等级,分数对应的等级分为不及格、及格、良好以及优秀。这时就可以使用elif语句。具体程序如程序3.2所示。

程序3.2 根据成绩完成详细的成绩评定:

输出:

分析:

程序的第1行和程序3.1一样,剩下部分展现了if…elif…else语句的实现。程序流程图如图3.3所示。

图3.3 程序的流程图

注意:

如果你之前接触过C/C++,那么很遗憾,Python中没有switch语句,但是你可以使用if…elif…else语句来做同样的事情。

通过上面的例子,我们已经了解了if…elif…else语句的结构,接下来看一个模拟机器检测PM2.5值的例子。在机器内部,通过传感器检测PM2.5的值(见图3.4),然后再判断这个值对应的空气情况。具体程序如程序3.3所示。

图3.4 正在工作的传感器

程序3.3 模拟机器检测PM2.5:

输出:

分析:

程序使用了一个if…elif…else语句模拟了机器检测PM2.5的例子,由于我们已经学习了条件控制语句,所以理解这个例子并不难。但是要注意的是,真正在机器中使用的是二进制,在这里先简单介绍一下关于进制的内容。

在Python中,我们分别使用0b、0o、0x作为二进制数、八进制数以及十六进制数的开头,后跟具体要表示的数,就像程序3.3中二进制数1010000需要写成0b1010000。另外,十进制数(假设存入变量num)也可以使用bin(num)、oct(num)、hex(num)分别生成num中十进制数对应的二进制数、八进制数、十六进制数。

注意:

使用bin、oct、hex这3个函数的返回值是字符串类型。