![人工智能基础教程:Python篇(青少版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/783/26846783/b_26846783.jpg)
3.1 条件控制语句
Python中的条件控制语句主要是围绕if语句展开的,下面将根据具体内容详细展开。
3.1.1 理解Python中的条件控制语句
条件控制语句是通过条件表达式的执行结果来决定后续执行代码的,执行的一般流程如图3.1所示。
![](https://epubservercos.yuewen.com/EFD799/15289821505523106/epubprivate/OEBPS/Images/aa0369.jpg?sign=1739285772-28eGhjVRIO29Ubi3EvDC6R7gc8qEeSxd-0-f87412769faaff35a1c75de7531c4a0c)
图3.1 条件控制语句流程图
对于条件表达式,Python指定非0和非空值为True,0或Null为False。接下来看看具体的条件控制语句。
3.1.2 if…else语句
具体语法:
![](https://epubservercos.yuewen.com/EFD799/15289821505523106/epubprivate/OEBPS/Images/aa0370.jpg?sign=1739285772-c6t59hCt6ZDjHWeppobwIXy9bvxm7q3V-0-25a3702dbcdf5badd1c27818e2edfc79)
这是一个很好理解的语句,它由4部分组成:关键字本身,用于判断结果真假的条件表达式(expression),条件为真(True)时执行的代码块以及条件为假(False)时执行的代码块。
提示:
(1)多重条件表达式的情况:正如字面意思所说,多重条件表达式就是情况复杂以至于一条if语句的执行是由很多因素决定的。我们可以使用逻辑运算符and、or以及not来组合条件表达式。
(2)if…else结构中的else部分是可选的。有时候我们只需要一个判断成功时的操作,而不需要考虑如果判断不成功的情形,即没有else及其之后的语句。这在实际的程序编写时也是很常用的。
注意:
尽管Python使用的是强制代码正确对齐,这使得在程序中出现不匹配else是不可能的,但是你一定要想好else是属于哪个if,因为要改正程序中的这类错误是很费精力的。
我们都知道在同条件的环境下使用催化剂会加快化学反应速度,在这里仅仅抽取化学实验中是否添加催化剂这个条件,来判断化学反应的速度等级。具体程序如程序3.1所示。
程序3.1 判断化学反应速度等级:
![](https://epubservercos.yuewen.com/EFD799/15289821505523106/epubprivate/OEBPS/Images/aa0371.jpg?sign=1739285772-Zxn325UzGEwSL2tm3lHwYc25im1SFcKB-0-ef6aa2733e78634110b40a58d6f5aa85)
输出:
![](https://epubservercos.yuewen.com/EFD799/15289821505523106/epubprivate/OEBPS/Images/aa0372.jpg?sign=1739285772-PiccoCzvlY5TxDgGyuy2FmbJwYVHgbV1-0-ddc1fdca6671ba4114ef81c59a74da52)
分析:
程序整体上比较简单,但比较明了地展现了if…else语句在程序中是如何使用的。程序根据输入判断具体执行哪条输出语句。如果我们的输入值为'y'的话,经过第3行的判断语句,程序会转入执行第4行。否则的话,程序将直接执行第6行。程序流程图如图3.2所示。
![](https://epubservercos.yuewen.com/EFD799/15289821505523106/epubprivate/OEBPS/Images/aa0374.jpg?sign=1739285772-qYj7y4qBwKxPKCUVRGJOtFiR1hHocKRB-0-2222f5ca6c142c8aba2d11de946f8df8)
图3.2 程序流程图
3.1.3 elif语句
具体语法:
![](https://epubservercos.yuewen.com/EFD799/15289821505523106/epubprivate/OEBPS/Images/aa0373.jpg?sign=1739285772-vWMU3BBG59xcag9o5f3zOqUQVP1HKmlF-0-13dcb74f9e89b1b5a4b93cbfa38f6a57)
elif即else if,其中elif和else一样,声明都是可选。引入这个语句是为了解决有多个条件待选择的情况。假如你要为老师编写一个简单的划分成绩等级的程序,该程序要做到输入分数自动生成对应的等级,分数对应的等级分为不及格、及格、良好以及优秀。这时就可以使用elif语句。具体程序如程序3.2所示。
程序3.2 根据成绩完成详细的成绩评定:
![](https://epubservercos.yuewen.com/EFD799/15289821505523106/epubprivate/OEBPS/Images/aa0375.jpg?sign=1739285772-IKicws0OKwXeepvk9frQixAPlK9zLdD1-0-78ce1cbbd3add00ef9710e85589899f5)
输出:
![](https://epubservercos.yuewen.com/EFD799/15289821505523106/epubprivate/OEBPS/Images/aa0376.jpg?sign=1739285772-Mtz15inxM7ob3PvZqTaCWDSqX8AlZMVH-0-fce93b1d54d3aa039511359453efa5f9)
分析:
程序的第1行和程序3.1一样,剩下部分展现了if…elif…else语句的实现。程序流程图如图3.3所示。
![](https://epubservercos.yuewen.com/EFD799/15289821505523106/epubprivate/OEBPS/Images/aa0377.jpg?sign=1739285772-BHZm0d0brDq91LF11VeQ2lV9rXQ6xm8R-0-99b91e7925eb2b04f60ceb1b0007fa79)
图3.3 程序的流程图
注意:
如果你之前接触过C/C++,那么很遗憾,Python中没有switch语句,但是你可以使用if…elif…else语句来做同样的事情。
通过上面的例子,我们已经了解了if…elif…else语句的结构,接下来看一个模拟机器检测PM2.5值的例子。在机器内部,通过传感器检测PM2.5的值(见图3.4),然后再判断这个值对应的空气情况。具体程序如程序3.3所示。
![](https://epubservercos.yuewen.com/EFD799/15289821505523106/epubprivate/OEBPS/Images/aa0380.jpg?sign=1739285772-HbAn6y2wqxkbolYkoOk4P4J5knyD3m5O-0-1d9d4dc6f6ce54419d9d96654761f356)
图3.4 正在工作的传感器
程序3.3 模拟机器检测PM2.5:
![](https://epubservercos.yuewen.com/EFD799/15289821505523106/epubprivate/OEBPS/Images/aa0378.jpg?sign=1739285772-u0egk2f0Qd4BJ8cBtibUrMWtCjNAGqrw-0-9294fd32645861e6d64b2a84032dbeeb)
输出:
![](https://epubservercos.yuewen.com/EFD799/15289821505523106/epubprivate/OEBPS/Images/aa0379.jpg?sign=1739285772-OqBEB8sHoChIgzN8ADUqCHvJAKvR5IQM-0-2edc6b86f13f1837e62456ad45051f36)
分析:
程序使用了一个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个函数的返回值是字符串类型。