![Python数据科学零基础一本通](https://wfqqreader-1252317822.image.myqcloud.com/cover/273/31904273/b_31904273.jpg)
第5章 流程控制及if语句的使用
本章摘要
5-1 关系运算符
5-2 逻辑运算符
5-3 if语句
5-4 if … else语句
5-5 if … elif … else语句
5-6 嵌套的if语句
5-7 尚未设置的变量值None
5-8 专题——BMI程序/猜出生日期/十二生肖系统/线性方程式
一个程序如果是按部就班从头到尾,中间没有转折,其实是无法完成太多工作的。程序设计过程中难免会需要转折,这个转折在程序设计中的术语是流程控制。本章将完整讲解有关if语句的流程控制。另外,与程序流程设计有关的关系运算符与逻辑运算符也将在本章做说明,因为这些是if语句流程控制的基础。
5-1 关系运算符
Python语言所使用的关系运算如下。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-T79_192468.jpg?sign=1739268954-wzCUVKFP8KsdguwF6XvbMLqartiFNqFS-0-4a79eee2fb3abfcf53422351f6707b70)
上述运算如果是真会返回True,如果是伪会返回False。
实例1:下列会返回True。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P79_43410.jpg?sign=1739268954-5SMFS6wyRddOU9ftWf2BxjRS02MPkJIC-0-64ccfc3bb6725eacdca1144349e5da44)
实例2:下列会返回False。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P79_43413.jpg?sign=1739268954-cWWKaGorJYmyXeR49wQCikmwcW61zORb-0-40cd05a7953ca4347adc3827fb61b504)
5-2 逻辑运算符
Python所使用的逻辑运算符有以下三个。
and:相当于逻辑符号AND。
or:相当于逻辑符号OR。
not:相当于逻辑符号NOT。
下列是逻辑运算符and的图例说明。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-T80_192471.jpg?sign=1739268954-sjTGt9Ll6bxnsbRPHfo2dQ1AtqbNlglq-0-f87c430742a9c78afa8bd1fb8b72542a)
实例1:下列会返回True。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P80_43912.jpg?sign=1739268954-6LXh9Ior0QPv78DBjpY3a81ZyS0PaWBo-0-5799176580ccbc1f1a891818808ce016)
实例2:下列会返回False。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P80_43915.jpg?sign=1739268954-f32gRwjs2KS8OA3U6QNla3vD981EcbnF-0-d56deef70d960660a5e896627753fc52)
下列是逻辑运算符or的图例说明。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-T80_192472.jpg?sign=1739268954-vy2IqswvoAO4PujcibZISX2t49bxkUI2-0-783ec48c0d2df119e88ece44f703dc1f)
实例3:下列会返回True。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P80_43969.jpg?sign=1739268954-2RKqSbFtCoL3tnE0dkj53vHdxtn3g7Kj-0-0046acf00e86945b3c85f3afe08e67c7)
实例4:下列会返回False。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P80_43972.jpg?sign=1739268954-wR8M3Pv3necIntOOu4AcLHzPoQCdBskM-0-d7a81002089cd3c326440f10903a7eb0)
下列是逻辑运算符not的图例说明。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-T80_192473.jpg?sign=1739268954-SJM4XWojXWnvgk0ApoiBQ5e1jt2P3Ltm-0-6313d0f0c9df767474d57ab6f3424e8c)
如果是True经过not运算会返回False,如果是False经过not运算会返回True。
实例5:下列会返回True。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P81_44458.jpg?sign=1739268954-oT47qZenyV2eAxaRk4SGUnzqTDo7ebQq-0-fd051f8067f39c9759024b9a83e04b79)
实例6:下列会返回False。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P81_44461.jpg?sign=1739268954-t1YFR8liURqD4sM4TyQkmeMoQjtZBXuR-0-fce58fa7402b79fcffd47f83e83f9b08)
5-3 if语句
if语句的基本语法如下:
if (条件判断): # 条件判断外的小括号可有可无 程序代码区块
如果条件判断是True,则执行程序代码区块,如果条件判断是False,则不执行程序代码区块。如果程序代码区块只有一条指令,可将上述语法写成下列格式。
if (条件判断): 程序代码区块
可以用下列流程图说明这个if语句。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P81_44499.jpg?sign=1739268954-reOe8n1GWQThjsVaZ1iUtBKYQO09zwlL-0-7700bf8ede08bc8e438912476763600b)
如果读者学习过其他程序语言,例如Visual Basic、C、JavaScript等,在条件表达式中是使用大括号“{ }”,将if语句的程序代码区块括起来,如下所示(以C语言为实例)。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P81_192482.jpg?sign=1739268954-9CfKgpDieSWzKwOF098oPj4R6AFy7hOn-0-63116b0d4b2d02f8f909d6215206ad93)
在Python内是使用内缩方式区隔if语句的程序代码区块,编辑程序时可以用Tab键内缩或是直接内缩4个字符空间,表示这是if语句的程序代码区块。相同内容,可以用下列方式处理。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P81_192484.jpg?sign=1739268954-hBz11c5Qk7HixcJTNNETd5F2aDfxuVQq-0-ca056e807ed98529e5fffeeb914f60c5)
在Python中内缩程序代码是有意义的,相同的程序代码区块,必须有相同的内缩,否则会产生错误。
实例1:正确的if语句程序代码。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P82_44948.jpg?sign=1739268954-GYXAFVoVpV5utQLs7Pl1EbseNMl1VHIu-0-254626f6a7da66d60d8a1fe508ee7522)
实例2:不正确的if语句程序代码,下列代码因为任意内缩造成错误。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P82_44951.jpg?sign=1739268954-tS0oiM7jiUtrGXq0svsZ7AVBzO4u9qUi-0-9db6bf126b7077e198ffaf100315b796)
上述笔者讲解if语句是True时需内缩4个字符空间,这是Python预设的,读者可能会问可不可以内缩5个字符空间,答案是可以的,但是记得相同程序区块必须有相同的内缩空间。不过如果是使用Python的IDLE编辑环境,当输入if语句后,只要按Enter键,程序就会自动内缩4个字符空间。
程序实例ch5_1.py:if语句的基本应用。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P82_44954.jpg?sign=1739268954-1NnnnTTW9SsXUbuANzpvkhuqpX1ckm7S-0-d97cd888487df329ee5604c73670eb2d)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P82_44957.jpg?sign=1739268954-OvWDJUCsIbMF0hCulReIGiteBRd2w99E-0-433b85c2056eefb0ad71e951298e1770)
程序实例ch5_2.py:输出绝对值的应用。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P82_44960.jpg?sign=1739268954-ogJNLFg7P1V6jIcUjOD2djqeSCqsbiah-0-f827eed20b88c0719ab88479a94c4d3f)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P83_45398.jpg?sign=1739268954-ZKVOuoEmYN6pJWg7nTc0z3IUytBUrZLD-0-2419c2a4780f8a4b9b471d06cca76b69)
对于上述ch5_2.py而言,由于if语句只有一条指令,所以可以将第5行和第6行改写成下列语句。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P83_45401.jpg?sign=1739268954-TVqT0YAtbXDkoIMvhE9er9tI1JBIsEmb-0-440f542f581136571906dc750dba5f31)
上述可以得到相同的结果,详请可参考本书代码文件中的ch5_2_1.py。
5-4 if … else语句
程序设计时更常用的功能是条件判断为True时执行某一个程序代码区块,当条件判断为False时执行另一段程序代码区块,此时可以使用if … else语句,它的语法格式如下:
if (条件判断): 程序代码区块一 else: 程序代码区块二
如果条件判断是True,则执行程序代码区块一,如果条件判断是False,则执行程序代码区块二。可以用下列流程图说明这个if … else语句。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P83_45430.jpg?sign=1739268954-LWYGaEJuCg2Kys0F9AWiXlcNXntZQTOz-0-616ac1379ac9a2ea77080c748b611369)
程序实例ch5_3.py:重新设计ch5_1.py,增加年龄满20岁时的输出。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P83_45433.jpg?sign=1739268954-mOqbShnwiKfMGxubZs2K2vFONG0L0sEK-0-4eeb4660db548155368e819f7dfb3c0f)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P84_45888.jpg?sign=1739268954-kk9b9LNQHDWJ1JQCOP6Af9N2kohYQ9Az-0-5aacb2cb3420b97b3c32a890ee38fc2d)
程序实例ch5_4.py:奇数偶数的判断。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P84_45891.jpg?sign=1739268954-yJSwhFwfMEzdrDWQeTlD9CtwBnVi2Jhc-0-6e0cca60614c3f5ba36dcfa5c080a8bf)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P84_45894.jpg?sign=1739268954-00U1JrtIw05BTGg9ZEX97NbsN7wE29jp-0-d6547200ed52e32e0fe233f8abf9fa52)
Python语言在执行网络爬虫存取数据时,常会不知道可以获得多少笔数据,例如可能是0~100笔,如果我们想要最多只取10笔数据(小于10笔也可以当作我们的数据),使用传统程序语言的语法,设计观念应该如下:
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P84_192493.jpg?sign=1739268954-VrGHDvuKicZ3ouTfy887lRq3BFM6LuJt-0-70f913b063ce9ff0957a97d44942dc5c)
在Python中,我们可以用下列语法表达:
items = 10 if items >= 10 else items
程序实例ch5_4_1.py:测试if … else语法。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P84_45897.jpg?sign=1739268954-zpt7xn8DElTh0unTP9c6SU9H0I8bY4BP-0-3259203a3469b7afbdc50f734e143c0e)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P85_46343.jpg?sign=1739268954-swy2nZrtDW2H7urYKbjVK0XZhPrsRYe9-0-68535c4f400cf18d1f5086962a0fe8bd)
5-5 if … elif … else语句
这是一个多重判断,程序设计时需要多个条件做比较时就比较有用。例如,在美国成绩计分是采取A、B、C、D、F等,通常90~100分是A,80~89分是B,70~79分是C,60~69分是D,低于60分是F。使用Python可以用这个语句,很容易就可以完成这个工作。这个语句的基本语法如下。
if (条件判断一): 程序代码区块一 elif (条件判断二): 程序代码区块二 … else: 程序代码区块 n
如果条件判断一是True则执行程序代码区块一,然后离开条件判断。否则检查条件判断二,如果是True则执行程序代码区块二,然后离开条件判断。如果条件判断是False则持续进行检查,上述elif的条件判断可以不断扩充,如果所有条件判断是False则执行程序代码n区块。下列流程图是假设只有两个条件判断说明这个if … elif … else语句。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P85_46388.jpg?sign=1739268954-6uYlA3FlDKJOxoudh2IP6nIe0I5CsTDm-0-4b8a8f4bd8f067e74210c7bb2c800992)
程序实例ch5_5.py:请输入数字分数,程序将响应A、B、C、D或F等级。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P86_46844.jpg?sign=1739268954-c2BXOKx2mCBHBETxyQ7wZA3XH41Noo0q-0-44eda03096e450bd686acb7d39dbe7ce)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P86_46847.jpg?sign=1739268954-sklz2HTqVlHGYJc8r2BN5e3WdyKpXRn0-0-f510a9d6956536f5ea201e1d5d599ec8)
程序实例ch5_6.py:有一地区的票价收费标准是100元。
(1)如果小于等于6岁或大于等于80岁,收费是打2折。
(2)如果是7~12岁或60~79岁,收费是打5折。
请输入年龄,程序会计算票价。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P86_46850.jpg?sign=1739268954-HVSPsgnG4HhCESQOlsvBZzOs4MwDVBft-0-02e21ef04760ad7c84c8df677eed93ab)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P87_47288.jpg?sign=1739268954-UV4gAzWwm2GPQG4931252y3O8nDujviQ-0-bd7751acbf55dcad6db3c2b4ac04c017)
上述程序的第6行和第9行,如果读者对于运算符执行的优先级没有太大的把握,建议直接用小括号将条件判断括起来,可参考ch5_6_1.py。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P87_47291.jpg?sign=1739268954-K9dzRne4X4EBWMnHooJCOy0vrr7zxsiH-0-33525ac78a7cfbf61247e3f0aad79e66)
程序实例ch5_7.py:这个程序要求输入字符,然后告知所输入的字符是大写字母、小写字母、阿拉伯数字或特殊字符。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P87_47294.jpg?sign=1739268954-0RhIawBSNNpyXq2pILvhmmpVuLHXy9kn-0-fff3cb08b0676c85489b8c59a2900399)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P87_47297.jpg?sign=1739268954-gQjzFAecq6qmDTLUfqeTmFYYDlh6YhuD-0-108f4498d06e9a1fc7aacdaa85b216ef)
5-6 嵌套的if语句
嵌套的if语句是指在if语句内又有其他的if语句,下列是一种情况的实例。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P88_47744.jpg?sign=1739268954-t28mGM3TiJxmE7EeqOSXXbbd2CUSvgI5-0-fc3d5f7fda4390308d5e5463c844d61b)
其实Python允许加上许多层,不过层次太多时,未来程序维护会变得比较困难。
程序实例ch5_8.py:测试某一年是否闰年,闰年的条件是首先可以被4整除(相当于没有余数),这个条件成立时,还必须符合除以100时余数不为0或是除以400时余数为0,当两个条件都符合才算闰年。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P88_47747.jpg?sign=1739268954-7VgvKm51iUdcOgCMdnlA7PQmhqBBOSmr-0-68c7977653ee0da56d75e495f86ae860)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P88_47750.jpg?sign=1739268954-lrPWDoOiEa1gTwLM5fmjFweSllOvJ0Ve-0-a7db9fa5432356673948f986078671c6)
5-7 尚未设置的变量值None
有人在设计程序时,喜欢将所有变量一次先予以定义,在尚未用到此变量时先设置这个变量的值是None,如果此时用type( )函数了解它的类型时将显示NoneType,如下所示。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P88_47754.jpg?sign=1739268954-Pm5p9r4OgoU6JHlg5h13maUigURPV5Ly-0-dd1ee4980848697a9e49f87c2c7cbeee)
通常在设计程序时,可使用下列方式测试。
程序设计ch5_8_1.py:if语句与None的应用。不过要注意的是,None在布尔值运算时会被当作
False。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P89_48226.jpg?sign=1739268954-RW6rV175fWV0E24Vb1nCAmWWbwdUIAml-0-9aa2b29fb00489b6e2627b6f4f5de5d4)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P89_48229.jpg?sign=1739268954-p8RDpqw0DywhjkXKEvjl6RioqW1PfGjZ-0-57ad6f4048cda9febd5a0281d27b64e1)
5-8 专题——BMI程序/猜出生日期/十二生肖系统/ 线性方程式
5-8-1 设计人体体重健康判断程序
BMI(Body Mass Index)又称身高体重指数(也称身体质量指数),是由比利时的科学家凯特勒(Lambert Quetelet)最先提出,也是世界卫生组织认可的健康指数,它的计算方式如下:
BMI = 体重(kg) / 身高(m)2
如果BMI为18.5~23.9,表示这是健康的BMI值。请输入自己的身高和体重,然后列出是否在健康的范围。中国官方针对BMI指数公布的更进一步资料如下。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-T89_192504.jpg?sign=1739268954-dZr2kOVaSxro3CgQoBSlgVrCMEaI3rM9-0-090e2413eec1c8731318f2629d77e950)
程序实例ch5_9.py:人体健康体重指数判断程序,这个程序会要求输入身高与体重,然后计算BMI指数,由这个BMI指数判断体重是否正常。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P89_48293.jpg?sign=1739268954-uVKrgxQAsT7RtBQ6vSzOaOA2sJUpxqqP-0-68b63393a6151edc14918da9b600f351)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P90_48761.jpg?sign=1739268954-thPzoLW2zXoudAYNJOgZbD4ZByzQiCPx-0-ab63cb44c222db70d7839aabe2701b32)
上述程序第4行"float (height)/100",主要是将身高单位由厘米改为米,上述专题程序可以扩充为输入身高体重后,程序可以列出相应BMI值及其所在区间,作为读者的习题。
5-8-2 猜出生日期
本节将先说明程序,随后再说明程序的工作原理。在讲解猜出生日期之前,先用更简单的猜0~7数字做说明。
程序实例ch5_10.py:读者心中先预想一个0~7的数字,程序中会问读者3个问题,请读者真心回答,然后这个程序会猜出读者心中的数字。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P90_48766.jpg?sign=1739268954-ciwOQfKJSQgwmln5ijLIU2deOQ0VEcMm-0-4df6bafaa179995535a501627081dbd7)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P91_49204.jpg?sign=1739268954-dB0EtvjgsxNNqdHjSf5BHlZDOkLbiXbL-0-bdac676f0406ff382fd6b3484f78736b)
0~7的数字基本上可用3个二进制表示,为000~111。其实所问的3个问题,基本上只是了解特定位是否为1。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P91_49207.jpg?sign=1739268954-1esd7Em7jxcfx46PByRUSfoRymXEjw3u-0-e71d4e49a680520afd9e1fa2e02333f1)
了解了以上概念,我们可以再进一步扩充上述实例猜测一个人生日的日期,一个人生日的日期是1~31的数字。
程序实例ch5_11.py:猜测一个人生日的日期,对于1~31的数字可以用5个二进制的位表示,所以可以询问5个问题,每个问题获得一个位是否为1,经过5个问题即可获得一个人的生日日期,下列是5组数据信息。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P91_49210.jpg?sign=1739268954-rB2uxK6Q4QEYrFa6ahcalxNgbTLOPTFO-0-28d827c8cf9daa79b3ea1b13dda198a2)
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P92_49647.jpg?sign=1739268954-JUJxcQtBaksON8zKwCyJ4IbQxcFIPBSq-0-464488f3f063b618f27ac378c8110758)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P92_49650.jpg?sign=1739268954-Ridch4icvIZ1hvLChuyqFpW0m7tGO28J-0-5cf2a06b1d1db4c721b947596ff63e7a)
5-8-3 十二生肖系统
在中国除了使用公元年份代号,也使用鼠、牛、虎、兔、龙、蛇、马、羊、猴、鸡、狗、猪当作十二生肖,每12年是一个周期,1900年是鼠年。
程序实例ch5_12.py:请输入你出生的公元年19××或20××,本程序会输出相对应的生肖年。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P93_50091.jpg?sign=1739268954-63bq4fTJxQ5Uel3m6U0FE35FO1im624z-0-047b538effa72459a554feca1ac1cf85)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P93_50094.jpg?sign=1739268954-HOJ3CK7JZLk5FqS1tm5NeoS64mhBXqjp-0-d0e6fe552433bf7df0f572f82f70d957)
注 以上是用公元日历,十二生肖年是用农历年,所以年初或年尾会有一些差异。
5-8-4 求一元二次方程式的根
在中学数学中,可以看到下列一元二次方程式:
ax2 + bx + c = 0
可以用下列方式获得根。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P93_192510.jpg?sign=1739268954-nDpzLRZFewurT5cYQ6gSrXTsOe3GnEjT-0-3741629d138c0e8d0dcac22326cde1ff)
上述方程式有3种状况,如果b2 – 4ac是正值,那么这个一元二次方程式有两个实数根。如果b2 – 4ac是0,那么这个一元二次方程式有一个实数根。如果b2 – 4ac是负值,那么这个一元二次方程式没有实数根。
实数根的几何意义是与x轴交叉点的坐标。
程序实例ch5_13.py:有一个一元二次方程式如下:
3x2 + 5x + 1 = 0
求这个方程式的根。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P94_50552.jpg?sign=1739268954-xA8FSUlVqYyyvzK0CTKJSpErktSja6my-0-b6b04175350e959061b315b81e1a1a31)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P94_50555.jpg?sign=1739268954-6FVMNAyVR34GCdRIuo9AhDgmjJt0XN0V-0-a9a5924f407bc9aea3bd2455f4daa2b9)
5-8-5 求解联立线性方程式
假设有一个联立线性方程式如下:
ax + by = e
cx + dy = f
可以用下列方式获得x和y值。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P94_192516.jpg?sign=1739268954-BtYjAUVG4LXXoKJmDHYXQfdr0RO4iaHZ-0-44517dba5b920d3d48eb38b3ce5e4ad5)
在上述公式中,如果a×d – b×c等于0,则此联立线性方程式无解。
程序实例ch5_14.py:计算下列联立线性方程式的值。
2x + 3y = 13
x – 2y = -4
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P94_50575.jpg?sign=1739268954-305km9hFpJAH4bFYl9CsXScWm9EdAz6V-0-b85bedbd14ea3d2fb2bb19f0449fb1af)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P94_50578.jpg?sign=1739268954-pofzNjPXT9aMK39Xwz2Qhnhirnv3JsES-0-53c76e224ef555f6ef6c928bf9a39983)
习题
1. 请改为不使用abs( )函 数重新设计ch5_2.py程序。(5-3节)
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P95_51021.jpg?sign=1739268954-O9UZxFNZpUVzWSNatd3K4YxDLRbOXYDK-0-3abd02083863c36667f5ee19ea9854ae)
2. 请输入3个数字,本程序可以将数字由大到小输出。(5-3节)
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P95_51024.jpg?sign=1739268954-uc3VmHDyCKdFGzEAJ3gvgX39elaHCeWj-0-a053d347230869b282aedeadc00c0ee5)
3. 有一个圆半径是20,圆中心在坐标(0,0)位置,请输入任意点坐标,这个程序可以判断此点坐标是不是在圆内部。(5-4节)
提示 可以计算点坐标距离圆中心的长度是否小于半径。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P95_51035.jpg?sign=1739268954-XI5InHxh20eTgVypzTgQP7vm4XWiRDFU-0-3681cc43b2a4042ad86303a2b9957048)
4. 请设计一个程序,如果输入是负值则将它改成正值输出,如果输入是正值则将它改成负值输出。(5-4节)
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P95_51038.jpg?sign=1739268954-8g0a4roXOhG9x8ORIKuZqGoGVAW5M31o-0-a58c62dd3bca2de403a1bf9c40c2b5c7)
5. 用户可以先选择华氏温度与摄氏温度转换方式,然后输入一个温度,可以转换成另一种温度。(5-5节)
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P95_51041.jpg?sign=1739268954-D1WSJ9wo2yVAxOiCssg2uBfFREHERT1Y-0-efb062f60622a37a3eadad12c2e5407f)
6. 假设在麦当劳打工每周领一次薪资,工作基本时薪是150元,其他规则如下。
(1)小于40小时(周),每小时是基本时薪的0.8倍。
(2)等于40小时(周),每小时是基本时薪。
(3)大于40至50(含)小时(周),每小时是基本时薪的1.2倍。
(4)大于50小时(周),每小时是基本时薪的1.6倍。
请输入工作时数,然后可以计算周薪。(5-5节)
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P96_51467.jpg?sign=1739268954-7QlPNzovEORMCjVjr57eFM2zpvBYwDHp-0-3ffbd64ff0d5fd56c8963a3f93a54dfc)
7. 假设今天是星期日,请输入天数days,本程序可以响应days天后是星期几。(5-5节)
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P96_51470.jpg?sign=1739268954-aJY7DXX2YaZDTTy5aYYzvjchns1G3Mig-0-4feed354121b4596c670cf5cfcef71c4)
8. 三角形边长的要求是两边长加起来大于第三边,请输入3个边长,如果这3个边长可以形成三角形则输出三角形的周长。如果这3个边长无法形成三角形,则输出这不是三角形的边长。(5-6节)
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P96_51473.jpg?sign=1739268954-NU5LGsptmIso0MHyfYvUYEWFtOFNMZQL-0-04b3f94b582fab8911c81e0186a00a12)
9. 扩充设计ch5_9.py,列出中国BMI指数区分的结果表。(5-7节)
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P96_51476.jpg?sign=1739268954-OlUmbtRLQmk2rh0KSv4LW8sJJXzK6kuV-0-73a24f7ec892bf90e65ffd5da2ea36f9)
10. 请参考ch5_13.py,但是修改为在屏幕上输入a, b, c三个数值,彼此用逗号隔开,然后计算此一元二次方程式的根,先列出有几个根。如果有实数根则列出根值,如果没有实数根则列出没有实数根,然后程序结束。(5-7节)
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P97_51904.jpg?sign=1739268954-Uh8LJXXOn7GrZAL7bCQcTYLTFdI2RvZl-0-90e91595676460658900abcae70fe851)
11. 请参考ch5_14.py,但是修改为在屏幕上输入a, b, c, d, e, f六个数值,彼此用逗号隔开,这些数值分别是联立线性方程式的系数与方程式的值,然后计算此线性方程式的x和y值,如果此题无解则列出此题目没有解。(5-7节)
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P97_51907.jpg?sign=1739268954-WApOrFg70DE0dLOqaHDc21r62t6uYtAC-0-a0a89d949ef60a40f5879dcacc3e39af)