![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=1739251732-VXS5IZcpNMMa1IeV1WXguDhDadQIqDdE-0-e388a0ec13d75f1c0f85e3b3b0d073cf)
上述运算如果是真会返回True,如果是伪会返回False。
实例1:下列会返回True。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P79_43410.jpg?sign=1739251732-3yNTLO9SumFMYGtRmNzl4mZpRbOH7jOW-0-9379798d1f708e009c843fc051587c16)
实例2:下列会返回False。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P79_43413.jpg?sign=1739251732-EpLWqq11K5Ga76u1sePNnAYzXQzxdwlv-0-0304dc8a626a143db126d4395660e7a6)
5-2 逻辑运算符
Python所使用的逻辑运算符有以下三个。
and:相当于逻辑符号AND。
or:相当于逻辑符号OR。
not:相当于逻辑符号NOT。
下列是逻辑运算符and的图例说明。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-T80_192471.jpg?sign=1739251732-jsLom7aNwN3hTUAxs7ax5SrkyTupqswu-0-12d39d51bbda31f1d6bcf1d90284e549)
实例1:下列会返回True。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P80_43912.jpg?sign=1739251732-HEqaODu7yFNDpdvThgWVFy0N3R5IAuAa-0-e14263fe90450347aa0bfb6e5a73c7b1)
实例2:下列会返回False。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P80_43915.jpg?sign=1739251732-opXXjdhZ3a1At1ebKAXhhsNHC8OrxhKi-0-81322cfa3fd4f3e2033ba970b148a18b)
下列是逻辑运算符or的图例说明。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-T80_192472.jpg?sign=1739251732-0BYjzbA1WZiaHwt70Bt5NoBFc972Q7Lr-0-c892163f827c57c52bf6690e063e1e8f)
实例3:下列会返回True。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P80_43969.jpg?sign=1739251732-hUVUhCEkRWNNBoyOcRumENGIIOsE7fNR-0-777c42d30d3a6e86ed40834ecb541ca5)
实例4:下列会返回False。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P80_43972.jpg?sign=1739251732-v4T25xGM0gLbI1xWorNdkuPdHResJtpk-0-ea7274ba69cd3621c74b12496e7d123e)
下列是逻辑运算符not的图例说明。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-T80_192473.jpg?sign=1739251732-v4iOO1WUqk8i9uuSARQfHQUWCPy4KBIp-0-944e4cdbf41f77db961446264786c832)
如果是True经过not运算会返回False,如果是False经过not运算会返回True。
实例5:下列会返回True。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P81_44458.jpg?sign=1739251732-O5GKn0ZkGXupGSrbQxwJaAnEwYglbtdC-0-d9fe6e74c2298a55322150425e09f5b7)
实例6:下列会返回False。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P81_44461.jpg?sign=1739251732-aEbmhCNynHsH5hETX5VX3Qt8k7zeeEsT-0-afb8803f835939878f482fbbeb1fd18a)
5-3 if语句
if语句的基本语法如下:
if (条件判断): # 条件判断外的小括号可有可无 程序代码区块
如果条件判断是True,则执行程序代码区块,如果条件判断是False,则不执行程序代码区块。如果程序代码区块只有一条指令,可将上述语法写成下列格式。
if (条件判断): 程序代码区块
可以用下列流程图说明这个if语句。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P81_44499.jpg?sign=1739251732-c5axfxb486LJQuXP8J3fvhPOglkyKVaQ-0-6999cdd72c5a3b7e8f30bddf2a2a7ab3)
如果读者学习过其他程序语言,例如Visual Basic、C、JavaScript等,在条件表达式中是使用大括号“{ }”,将if语句的程序代码区块括起来,如下所示(以C语言为实例)。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P81_192482.jpg?sign=1739251732-BtY7tqAy8NbOkVO3KuODQpdEvR6AtnzR-0-45f99a92a8b3b669dd76d720e1c5fb02)
在Python内是使用内缩方式区隔if语句的程序代码区块,编辑程序时可以用Tab键内缩或是直接内缩4个字符空间,表示这是if语句的程序代码区块。相同内容,可以用下列方式处理。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P81_192484.jpg?sign=1739251732-O2XYBD72llAam4PRLL2NV3PmOWNtTG6U-0-d7bd27091c427fa4cad1ea891de4b3d3)
在Python中内缩程序代码是有意义的,相同的程序代码区块,必须有相同的内缩,否则会产生错误。
实例1:正确的if语句程序代码。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P82_44948.jpg?sign=1739251732-BBZ4tnPxM8FslhJnmv9bomepL3akWy5A-0-6be07ed845ad7b44d88a22bfdfb6ffbc)
实例2:不正确的if语句程序代码,下列代码因为任意内缩造成错误。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P82_44951.jpg?sign=1739251732-X2nWTKpMGdgkdFbwQ6jVOgw7QcObHVtb-0-56248e572a0d7163f62bd0c790eeee68)
上述笔者讲解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=1739251732-QuhoZ7yGdrVSIaKm27pJsTsaI3YySsyr-0-d2bab8af96c641bf31634c37b3589421)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P82_44957.jpg?sign=1739251732-0d44l504o0e0pXhymB61yscsvfsSgUKd-0-eb33fbaec0ca219e4f40b5e332fe36ef)
程序实例ch5_2.py:输出绝对值的应用。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P82_44960.jpg?sign=1739251732-6X95XdNlc1rhRUa6fQ0EcFB4nhLBSftn-0-dca07008cda2914f57e4328b5e819ccd)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P83_45398.jpg?sign=1739251732-qMp6v4mktEq01nw35I5G6bWMhcpvGfTL-0-4b6fbac57a24c2fa765e6965f9459ed2)
对于上述ch5_2.py而言,由于if语句只有一条指令,所以可以将第5行和第6行改写成下列语句。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P83_45401.jpg?sign=1739251732-U55tqOSuqobHGJV8ltYG8nOaduGkwrmf-0-568bbbe2078490d0e0e6439af105f829)
上述可以得到相同的结果,详请可参考本书代码文件中的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=1739251732-MPmGN705RV9IpDE5lUuHwXm6jw6Gi112-0-de81af3280cf5472ca8c1d11592f05f9)
程序实例ch5_3.py:重新设计ch5_1.py,增加年龄满20岁时的输出。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P83_45433.jpg?sign=1739251732-Zi9PZeOyC1A5kAKuTDle556ujknD3nAg-0-4a03ae1d79caec6afa7ddbaf5bf2ccd0)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P84_45888.jpg?sign=1739251732-75Yyj6JjzJFhYyE5FoBW6q0q5pFIVsbm-0-27c6951fb6fce96dd1b644104dec5494)
程序实例ch5_4.py:奇数偶数的判断。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P84_45891.jpg?sign=1739251732-Y9x0gdPzSb0yYuXMC8OL30mf1yL6ct7n-0-682afa2797736458d7b7c215550584c6)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P84_45894.jpg?sign=1739251732-2Hrd3gS8GrhXHUOKbOjBk0FkNDXBl2PJ-0-f6f31c4d4b688d3a607cddd6b8bb7aed)
Python语言在执行网络爬虫存取数据时,常会不知道可以获得多少笔数据,例如可能是0~100笔,如果我们想要最多只取10笔数据(小于10笔也可以当作我们的数据),使用传统程序语言的语法,设计观念应该如下:
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P84_192493.jpg?sign=1739251732-X6aRF2L1OEtjVDcRbMcyyI6BVDlWgHSs-0-c46afa8935d1888a92b981cbbbea7334)
在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=1739251732-s2lI5FdDat08vcHnPrOL2Z3fWJvVkCEp-0-8ba9e56d8a4e0f8e862eb21244a43667)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P85_46343.jpg?sign=1739251732-O7EwYqPT9Lb0uyAXxEnY8G9V7ootPuFX-0-731ff1d6cb3bb3822bba53f355438228)
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=1739251732-YwjHYekylyzPhf5EhbXBHlUJHt4IQdUG-0-8d8ea93182700e4290a132a959642ea0)
程序实例ch5_5.py:请输入数字分数,程序将响应A、B、C、D或F等级。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P86_46844.jpg?sign=1739251732-K2EB2lURn8SwobijyEx68hI07f16FjLd-0-7a1bd27c76546f12fbec8adfa731df6f)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P86_46847.jpg?sign=1739251732-sI47bdvmZwEUDhVpy7fugxG3Ro7JDxiK-0-90f0b3af40f60e6843d12e86afe2ea98)
程序实例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=1739251732-WQDVK3KASzNsWDF1zDtt37cD5h7vvjWT-0-e03eb755c368353aa2705874fff66ebc)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P87_47288.jpg?sign=1739251732-LYavTISNvklx4HhvCUcb5LlOCa5QP4Vf-0-03c312c2e039ccfaa05e1d4dad6a4a7e)
上述程序的第6行和第9行,如果读者对于运算符执行的优先级没有太大的把握,建议直接用小括号将条件判断括起来,可参考ch5_6_1.py。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P87_47291.jpg?sign=1739251732-GtjBptPp2bAzKD1PF718enlfFaCcAxoF-0-d499809bceaa947ce2f632fcac573112)
程序实例ch5_7.py:这个程序要求输入字符,然后告知所输入的字符是大写字母、小写字母、阿拉伯数字或特殊字符。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P87_47294.jpg?sign=1739251732-C9bQaPhJhBetfUNrFi58vi3BvWDBDWqe-0-aeec129d325c9dc534a6eba8558a35a9)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P87_47297.jpg?sign=1739251732-rr5aocW03l3eRl6nQ069vhxvi4ivevYy-0-9ef4c27932d21118910256b6a44f57c0)
5-6 嵌套的if语句
嵌套的if语句是指在if语句内又有其他的if语句,下列是一种情况的实例。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P88_47744.jpg?sign=1739251732-ZQt1FFdaXAIiwVweaglfDgK3tennBhxk-0-c4c5ddb0653314e1a0a4e9bcf84d30f4)
其实Python允许加上许多层,不过层次太多时,未来程序维护会变得比较困难。
程序实例ch5_8.py:测试某一年是否闰年,闰年的条件是首先可以被4整除(相当于没有余数),这个条件成立时,还必须符合除以100时余数不为0或是除以400时余数为0,当两个条件都符合才算闰年。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P88_47747.jpg?sign=1739251732-fHmZFMIYFMnT1DBMAUTTPWWpcSkRwoWB-0-4f942c223bf13195b29641a801be1dad)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P88_47750.jpg?sign=1739251732-SjtNN3LIN6IYtjhlNJUdjAxUcVZQdOut-0-ea1c7d08e552e08b8a5e6ce17d8cccba)
5-7 尚未设置的变量值None
有人在设计程序时,喜欢将所有变量一次先予以定义,在尚未用到此变量时先设置这个变量的值是None,如果此时用type( )函数了解它的类型时将显示NoneType,如下所示。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P88_47754.jpg?sign=1739251732-vZ5fRo2pTieBymH8ITfrr34PXjOZYI0k-0-6d8d54b4575e1f0ba4678484965fee33)
通常在设计程序时,可使用下列方式测试。
程序设计ch5_8_1.py:if语句与None的应用。不过要注意的是,None在布尔值运算时会被当作
False。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P89_48226.jpg?sign=1739251732-1XI0DpPjlWALqCwUTkroS4VJ9DP6tYl4-0-c8b9784786d6889fde01f2f4ca564063)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P89_48229.jpg?sign=1739251732-w8gvbnzs3sWEis6a1QJXnGZohdbWuTA5-0-ab122b454a40f8a30ccbe53ed7ec8f8f)
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=1739251732-OFMqaXGxBZuI53TfPUAssGYAyWbnyvdn-0-826e43af5999427c2b660ef779b98662)
程序实例ch5_9.py:人体健康体重指数判断程序,这个程序会要求输入身高与体重,然后计算BMI指数,由这个BMI指数判断体重是否正常。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P89_48293.jpg?sign=1739251732-i4BLo6bhlNyFxInEzZ1CYfCoMXuo2rw3-0-292c955c63aa091ca4e29cfaa41ad418)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P90_48761.jpg?sign=1739251732-5U5tAEsj3Or7uuFfTIpmhMeBkonfKeF6-0-8bd8cd4817d236b182357a32bd84fe72)
上述程序第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=1739251732-LCx0jWAljiLz5eyt1NGfrb2jVqxaJlFi-0-9785b38ff0b55732582b02969e74d430)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P91_49204.jpg?sign=1739251732-AdLYPhFlFYEJqUR8BrztImzYkfusw6Mz-0-71ea1d531923d374cbc316cc18c40b52)
0~7的数字基本上可用3个二进制表示,为000~111。其实所问的3个问题,基本上只是了解特定位是否为1。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P91_49207.jpg?sign=1739251732-DXI9jAP8Ia9JvLmt2mQOcsGUJ4ITTudl-0-8df519e1d5227b5c4454d7b405195aae)
了解了以上概念,我们可以再进一步扩充上述实例猜测一个人生日的日期,一个人生日的日期是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=1739251732-VrfQbaKxP42FzNgCd24CXuu0s12g43mU-0-3b3544a51d320f13be03dcd7dc5ddb4a)
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P92_49647.jpg?sign=1739251732-I7fpev5j99OWyPz3TcJaF1pw7uLyHkNz-0-8c82bdde4bb90e6942bcd28de82dca08)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P92_49650.jpg?sign=1739251732-gkcYQRUpPHEu7GvRmjrPkiKCT5KCaieX-0-376adcbeea7612e72f1d2d5ce20b86ed)
5-8-3 十二生肖系统
在中国除了使用公元年份代号,也使用鼠、牛、虎、兔、龙、蛇、马、羊、猴、鸡、狗、猪当作十二生肖,每12年是一个周期,1900年是鼠年。
程序实例ch5_12.py:请输入你出生的公元年19××或20××,本程序会输出相对应的生肖年。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P93_50091.jpg?sign=1739251732-shvwrwFkNqLadkp2xFXD6lz7HKSYJovK-0-52c2b219205dd8adb91b151203f54d45)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P93_50094.jpg?sign=1739251732-cHkQvJxd8A76j8EHFsa2sFlAHqQjWxMC-0-ff5a4b6046491008e363f8a53fc08ae3)
注 以上是用公元日历,十二生肖年是用农历年,所以年初或年尾会有一些差异。
5-8-4 求一元二次方程式的根
在中学数学中,可以看到下列一元二次方程式:
ax2 + bx + c = 0
可以用下列方式获得根。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P93_192510.jpg?sign=1739251732-YDbtaSPaIwsw4F8ayvvk1geHh6jPsizI-0-b4865631c43611621d4da4a0f26d1615)
上述方程式有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=1739251732-742NAXCD6OhhyVbu00E0Iqd2pPwbvum2-0-33cee564a4f3bfcbc49b555022d8524d)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P94_50555.jpg?sign=1739251732-awZUiK4Y9d5eNy1YpmD3eoY0qkhkGHBK-0-e9eb75d69c308d848e93137e0b696f86)
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=1739251732-3f0i7avlI7VrvejcIIogceXKlPPwiKxM-0-c8c12040bf82328a28b3e223cc80b76d)
在上述公式中,如果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=1739251732-xXFsV5NIEg46EtRHGvb5We8SLYo4Obp6-0-4e74e01c16c1464c5a128a60df0d6b00)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P94_50578.jpg?sign=1739251732-wmTN9KxhIixs2X0KS7geSqMmmiqyuNvB-0-ab0d98078cfdafe4e7ef9e0d5d558a51)
习题
1. 请改为不使用abs( )函 数重新设计ch5_2.py程序。(5-3节)
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P95_51021.jpg?sign=1739251732-0ArfBqIycnlrQ9lHO3VVdMrxRuf4R823-0-99e8825774b9a0e884da3418d9d7ec4a)
2. 请输入3个数字,本程序可以将数字由大到小输出。(5-3节)
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P95_51024.jpg?sign=1739251732-tcD1OE4NVvNM2CyeZsfVvfecaoAPHdUP-0-b4c90efc768015a2f1b53d31e4c33393)
3. 有一个圆半径是20,圆中心在坐标(0,0)位置,请输入任意点坐标,这个程序可以判断此点坐标是不是在圆内部。(5-4节)
提示 可以计算点坐标距离圆中心的长度是否小于半径。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P95_51035.jpg?sign=1739251732-BCsUNrAMfRsevL8pNV7YWM6icp5CKL8P-0-e8e5212e8b00e80e49f30e02f43b3d03)
4. 请设计一个程序,如果输入是负值则将它改成正值输出,如果输入是正值则将它改成负值输出。(5-4节)
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P95_51038.jpg?sign=1739251732-IECaXO9PfRrdIbS4x0lyTARXGJtOUpQi-0-a9513a22ba2e14455df537c4d735a9b2)
5. 用户可以先选择华氏温度与摄氏温度转换方式,然后输入一个温度,可以转换成另一种温度。(5-5节)
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P95_51041.jpg?sign=1739251732-exGCTpVs1gLI8LRDn3262djbwKkM0nnn-0-264227dfd5b6e335ea87cea7633cbbec)
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=1739251732-FFDHivMdJhydW3VAOm34Do8qjYeEWiKi-0-d5d74846a0d81000af5837f7e73e59b0)
7. 假设今天是星期日,请输入天数days,本程序可以响应days天后是星期几。(5-5节)
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P96_51470.jpg?sign=1739251732-uBMYJ0kg9e1PvlQm0nSUvBck5cTjD1XM-0-53591fc2312fa40c316a67dd4fe763c7)
8. 三角形边长的要求是两边长加起来大于第三边,请输入3个边长,如果这3个边长可以形成三角形则输出三角形的周长。如果这3个边长无法形成三角形,则输出这不是三角形的边长。(5-6节)
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P96_51473.jpg?sign=1739251732-nOBukXOCJTqn7Dy1rXlmplP7P7eHaEdp-0-8dd03d65b6214e65b21b7c7297099d2f)
9. 扩充设计ch5_9.py,列出中国BMI指数区分的结果表。(5-7节)
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P96_51476.jpg?sign=1739251732-bfCQzmfeKeNwUBbRm2UOlqFr4rthXkm5-0-4b0564aab9ba8b8bc03ec3ed66b8058e)
10. 请参考ch5_13.py,但是修改为在屏幕上输入a, b, c三个数值,彼此用逗号隔开,然后计算此一元二次方程式的根,先列出有几个根。如果有实数根则列出根值,如果没有实数根则列出没有实数根,然后程序结束。(5-7节)
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P97_51904.jpg?sign=1739251732-IgBTizGhmDTP0vW0sJieFa2HiCkciwxM-0-613bfc7e675e055e1a51d50c84a272c0)
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=1739251732-ddbu9JL2NR5pE7ihJ8092R3zxB3OolkV-0-9f21592cb80f9c7f1ed35f7ac72a410c)