![人工智能基础教程: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=1739167119-gXRFwAm4AdzTq06I9tdyi5a6gmEBlxCs-0-0c759411e87c67ec0fb30ef363d2768d)
图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=1739167119-2L7Q1VKcGw8YCaM6NmMMnpZIqOvYlajz-0-b0c2d9e3cbfc56d12bce8368245e7ac4)
这是一个很好理解的语句,它由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=1739167119-so2xEdeomrgjDt9lZxC9Q3919uuXI8X7-0-5a7987b348e4f39eb4393dcfc159202a)
输出:
![](https://epubservercos.yuewen.com/EFD799/15289821505523106/epubprivate/OEBPS/Images/aa0372.jpg?sign=1739167119-Yr3hGElALHuyt76i6hQp8G6AebWyf91T-0-fcae67adec82035c464ef4ab22ea70e8)
分析:
程序整体上比较简单,但比较明了地展现了if…else语句在程序中是如何使用的。程序根据输入判断具体执行哪条输出语句。如果我们的输入值为'y'的话,经过第3行的判断语句,程序会转入执行第4行。否则的话,程序将直接执行第6行。程序流程图如图3.2所示。
![](https://epubservercos.yuewen.com/EFD799/15289821505523106/epubprivate/OEBPS/Images/aa0374.jpg?sign=1739167119-CEKXh2IjFXvZzG2GkVWNGnzisiNKRupg-0-f9f4904a48d8e515527fb5b14159fda2)
图3.2 程序流程图
3.1.3 elif语句
具体语法:
![](https://epubservercos.yuewen.com/EFD799/15289821505523106/epubprivate/OEBPS/Images/aa0373.jpg?sign=1739167119-MccIjBNwMMVEEfudcFw4je99yk46tO5p-0-4c360ce5293da7fdfe870db8e760ac00)
elif即else if,其中elif和else一样,声明都是可选。引入这个语句是为了解决有多个条件待选择的情况。假如你要为老师编写一个简单的划分成绩等级的程序,该程序要做到输入分数自动生成对应的等级,分数对应的等级分为不及格、及格、良好以及优秀。这时就可以使用elif语句。具体程序如程序3.2所示。
程序3.2 根据成绩完成详细的成绩评定:
![](https://epubservercos.yuewen.com/EFD799/15289821505523106/epubprivate/OEBPS/Images/aa0375.jpg?sign=1739167119-N4khR5QGO63kLHqIyhbLgZB70zA6KFuc-0-fc31cd8acda520448c268d6ffb3c662b)
输出:
![](https://epubservercos.yuewen.com/EFD799/15289821505523106/epubprivate/OEBPS/Images/aa0376.jpg?sign=1739167119-oFBj0XR1NYYWaAkYfNwbSsacaoJnlNv0-0-c561df9dc8e128d18951e272d37f0db9)
分析:
程序的第1行和程序3.1一样,剩下部分展现了if…elif…else语句的实现。程序流程图如图3.3所示。
![](https://epubservercos.yuewen.com/EFD799/15289821505523106/epubprivate/OEBPS/Images/aa0377.jpg?sign=1739167119-Lqs8w0Enur0jsufVR6AxOqxbEQxIZMxs-0-ebe0287df3804cd99ede486c7fd176b5)
图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=1739167119-JqNmfJ4A3iCR6IE5rRaSfy8NTDHJByzj-0-4bdc60592e101f26945dea8a14fdca3b)
图3.4 正在工作的传感器
程序3.3 模拟机器检测PM2.5:
![](https://epubservercos.yuewen.com/EFD799/15289821505523106/epubprivate/OEBPS/Images/aa0378.jpg?sign=1739167119-kWes4yG2eHgBp1vGiHtvqtvvlvQ2Cenf-0-da43dd29e5a1f65423823fd23a0033c3)
输出:
![](https://epubservercos.yuewen.com/EFD799/15289821505523106/epubprivate/OEBPS/Images/aa0379.jpg?sign=1739167119-sketlqYbXVxDQuwVHIcv48p4SN2v4Stm-0-cdc77c7312f4b72036f1b2e2b85a1d55)
分析:
程序使用了一个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个函数的返回值是字符串类型。