![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=1739489691-OhOtFrqbd69zCXa0FxQmOL2RA4kKSy18-0-9112c0e6bd34d4b52fc2f3b1439e95e0)
上述运算如果是真会返回True,如果是伪会返回False。
实例1:下列会返回True。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P79_43410.jpg?sign=1739489691-IK6GsxPkYBlM7KDROJysQ7wgBJLaUsec-0-d92c25450dece34e7176bb85d69a66ce)
实例2:下列会返回False。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P79_43413.jpg?sign=1739489691-YzR6rF5lfSoixf8J1tRXsj5eQFr6DY1z-0-27ac1482d6c3bc3289d3e6fb872f1df1)
5-2 逻辑运算符
Python所使用的逻辑运算符有以下三个。
and:相当于逻辑符号AND。
or:相当于逻辑符号OR。
not:相当于逻辑符号NOT。
下列是逻辑运算符and的图例说明。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-T80_192471.jpg?sign=1739489691-N8VgF7OHvQPvlzeMNySjwdo8Z7LyKiVp-0-58ae969ab0822ced92864810098c2344)
实例1:下列会返回True。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P80_43912.jpg?sign=1739489691-RklMbDOx3nLaZENIe1MzagnOnQzySfLz-0-b4d2b5f308c79cb5c0fb93a1a0123808)
实例2:下列会返回False。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P80_43915.jpg?sign=1739489691-soXyVUfK5h0cq4pz7YOeIm4TiqhDFyAM-0-8666bf3f54a571ef829977c2025aff68)
下列是逻辑运算符or的图例说明。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-T80_192472.jpg?sign=1739489691-w0VEnQviQAnkgnW2jYBfwgk25gxihuvP-0-59d323ce601c252a3d2acd886ef7b1a7)
实例3:下列会返回True。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P80_43969.jpg?sign=1739489691-yD3BTHLVKwk3YL3zzWZM6NEO9OZMROzS-0-f738abad68556fe492f8c8d826b0a153)
实例4:下列会返回False。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P80_43972.jpg?sign=1739489691-nu2VvJJgqrTUHZWXi9AyEMn8RJVe3zRi-0-20f4283031e6087a9ec728e57bda1c23)
下列是逻辑运算符not的图例说明。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-T80_192473.jpg?sign=1739489691-7lddvK9HZ1ssHA32gFCLsxGtJZRiQi29-0-01a1ffaed4b61d6ce2f8fd975cf9c394)
如果是True经过not运算会返回False,如果是False经过not运算会返回True。
实例5:下列会返回True。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P81_44458.jpg?sign=1739489691-VIHt94PBh6SAs4KqDferaIPBM7wlgnEk-0-bc48a7ea183e34fc09db31b4b9546832)
实例6:下列会返回False。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P81_44461.jpg?sign=1739489691-29PEboe4hvbqcU5CzLzUkG9CFYSSBiJi-0-1f390b7da1c71c3eef67034f1884ee23)
5-3 if语句
if语句的基本语法如下:
if (条件判断): # 条件判断外的小括号可有可无 程序代码区块
如果条件判断是True,则执行程序代码区块,如果条件判断是False,则不执行程序代码区块。如果程序代码区块只有一条指令,可将上述语法写成下列格式。
if (条件判断): 程序代码区块
可以用下列流程图说明这个if语句。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P81_44499.jpg?sign=1739489691-uwWcd0l5pOztkR6VNM7m0Urhmt5I16MW-0-ab2161e615e21d8af68919e0978029c4)
如果读者学习过其他程序语言,例如Visual Basic、C、JavaScript等,在条件表达式中是使用大括号“{ }”,将if语句的程序代码区块括起来,如下所示(以C语言为实例)。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P81_192482.jpg?sign=1739489691-rs2Z5jzhoS6MIyu7d5O2OWfyeDQ8O7Dx-0-61212ce9aa0b76484f1a159fc9d3c87d)
在Python内是使用内缩方式区隔if语句的程序代码区块,编辑程序时可以用Tab键内缩或是直接内缩4个字符空间,表示这是if语句的程序代码区块。相同内容,可以用下列方式处理。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P81_192484.jpg?sign=1739489691-RUMj2a3Al5dS7UWTz5THWf05sV8IZiua-0-83b3551f00beea2529cab7bb07d4250b)
在Python中内缩程序代码是有意义的,相同的程序代码区块,必须有相同的内缩,否则会产生错误。
实例1:正确的if语句程序代码。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P82_44948.jpg?sign=1739489691-mvcl6dQFvsuzgJzV51DqTAU3BohXbtTI-0-bd4c9329a8391c7988ff49d76c0a3ce8)
实例2:不正确的if语句程序代码,下列代码因为任意内缩造成错误。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P82_44951.jpg?sign=1739489691-bDGQs9CcmGpUn8kupL6YsBBmzRfyvo8Z-0-d373e4710f98bbe73273f3db1bc1f0ec)
上述笔者讲解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=1739489691-Gvp4OOyGPGl8BXsUiuOAhoBDdNvv8XB2-0-e0b7199b299cdc90dd2a57d40f2d23e7)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P82_44957.jpg?sign=1739489691-BFgHHU7Yx9LwOnBBlcS3plalPutuYKWL-0-6a508e03e8a6ce3f7e802bc56019964d)
程序实例ch5_2.py:输出绝对值的应用。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P82_44960.jpg?sign=1739489691-pJC8ZdTht8snN9BKcemDwEMfgoDTOHM4-0-0c073ee7b5b6cfdca1cdc921bf6c7408)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P83_45398.jpg?sign=1739489691-7Zgd8632Ayq1DbhDOpghMdzAT630upcA-0-fa0388aed6db5b94079b32bf884cff82)
对于上述ch5_2.py而言,由于if语句只有一条指令,所以可以将第5行和第6行改写成下列语句。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P83_45401.jpg?sign=1739489691-byP0qQ9jny2NuFBUwJCy7HXTLbxXRsdI-0-dbfab2ec40a09d73a17a88d0badac40f)
上述可以得到相同的结果,详请可参考本书代码文件中的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=1739489691-TbufFfqKuhKvTIpklCkip8kDMHn2eGSQ-0-35387bbfc74aaaf9060eef77aa791c7f)
程序实例ch5_3.py:重新设计ch5_1.py,增加年龄满20岁时的输出。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P83_45433.jpg?sign=1739489691-82q3WpiHSplRAfySbetJnANOeU6u0JWK-0-3e0cb9f15d831a398a74208fd3e38d12)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P84_45888.jpg?sign=1739489691-12EgFp9T4cwgpImxoQF45rR514VZUgoV-0-d6f9792cd52d9d6231b985c0a5bf0499)
程序实例ch5_4.py:奇数偶数的判断。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P84_45891.jpg?sign=1739489691-I2t4mTWcD1zhbZ9YCdZWzjQ7h6yCaiJA-0-7e6e016c3cef449fec2fc6fa3bac9faf)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P84_45894.jpg?sign=1739489691-3GQpEK1xEvljULPaSHqXI886lEIwKQoW-0-ced958c6450b871024d38f0c3e2f328f)
Python语言在执行网络爬虫存取数据时,常会不知道可以获得多少笔数据,例如可能是0~100笔,如果我们想要最多只取10笔数据(小于10笔也可以当作我们的数据),使用传统程序语言的语法,设计观念应该如下:
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P84_192493.jpg?sign=1739489691-gOP8l88xLnqZJxS8PKk0vK76HECdnVV9-0-eda71a8949a62070803e9d8630805ae5)
在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=1739489691-5gyKt0HHrRtWTZixI7ERXFuQ73e25kmZ-0-1ab199d0f183c5292e0a5fb86d748566)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P85_46343.jpg?sign=1739489691-zxiBZYaMuGmLL2K79JKk58Xu4idASnvI-0-dd29650b96f9d7556d714c2eca4027ea)
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=1739489691-p10KY3nr1Bm9TCFLVHMRbKH5NBHZT790-0-ddae6018a0d34bf766c12edc9d87ef8d)
程序实例ch5_5.py:请输入数字分数,程序将响应A、B、C、D或F等级。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P86_46844.jpg?sign=1739489691-DA8VoV1ljDVaz4hbPWJCVkObOKzrIoRs-0-5c4ed180a7863449ad92dba9d3b750c3)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P86_46847.jpg?sign=1739489691-uUFxiu49vXZf8WrlBcZLzaWAge8gJ7vR-0-c827d2e6bb8d2f37e6a0fb91feccac1b)
程序实例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=1739489691-KdJWjpxO7sIXqe8JXZxYIbpzXNxibiT8-0-0c2ddca157e9fa3ccf3da2a6226a360e)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P87_47288.jpg?sign=1739489691-A9dmFedzrW31SCUG9F0BBHKF6J5tIXpf-0-f64b82b1bd0ee96d9079755919e55218)
上述程序的第6行和第9行,如果读者对于运算符执行的优先级没有太大的把握,建议直接用小括号将条件判断括起来,可参考ch5_6_1.py。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P87_47291.jpg?sign=1739489691-f2gvaYNMW02XfOTS9JhILjmknurl6hr1-0-4a97dd0513ee0c7093f4ea42972dbcff)
程序实例ch5_7.py:这个程序要求输入字符,然后告知所输入的字符是大写字母、小写字母、阿拉伯数字或特殊字符。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P87_47294.jpg?sign=1739489691-b513AWodPKz3Ew6OlS9CKEqiJVZhnEiW-0-036108c4d9feab941a5487ed4559a5a4)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P87_47297.jpg?sign=1739489691-DElaeXg58D8pYWgiv06VxbptrS5nkm8w-0-8e3565cfbe66ae465400ddd35b0275f3)
5-6 嵌套的if语句
嵌套的if语句是指在if语句内又有其他的if语句,下列是一种情况的实例。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P88_47744.jpg?sign=1739489691-cDBtSPFoG3hVPAQdiYPbsZok5yekoyDP-0-c0fe56edbcb4075b416d7b8eb7364b12)
其实Python允许加上许多层,不过层次太多时,未来程序维护会变得比较困难。
程序实例ch5_8.py:测试某一年是否闰年,闰年的条件是首先可以被4整除(相当于没有余数),这个条件成立时,还必须符合除以100时余数不为0或是除以400时余数为0,当两个条件都符合才算闰年。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P88_47747.jpg?sign=1739489691-nPY0c53hhOltnwTFfMVYatC3Jalk633N-0-8d81a0e4ecbfc4f88718e67b0948a8b8)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P88_47750.jpg?sign=1739489691-udfjrY1XyfF0vpIZHYbTZp85NkcSYtVq-0-6b9cbbe0fe205ee9b640bc4f1b779fe4)
5-7 尚未设置的变量值None
有人在设计程序时,喜欢将所有变量一次先予以定义,在尚未用到此变量时先设置这个变量的值是None,如果此时用type( )函数了解它的类型时将显示NoneType,如下所示。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P88_47754.jpg?sign=1739489691-Ond7eVTGCn7p5xMVjV4maSlPk0Nw6P7m-0-4da68992ac7f0016cf9b46b4e878104e)
通常在设计程序时,可使用下列方式测试。
程序设计ch5_8_1.py:if语句与None的应用。不过要注意的是,None在布尔值运算时会被当作
False。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P89_48226.jpg?sign=1739489691-Tt9KibtzjCzYEYv1dBS07URLlu4AcFUa-0-d4862114889d8ff9a4a4d67e2f914c52)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P89_48229.jpg?sign=1739489691-3TeTyMrRHeDbTEoVw7PE6Pv1mfbcMlTz-0-ee1b0b112a8504d86b4dae43c5f8d1b6)
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=1739489691-n1k3Ugl4t7y5zgxbVh9CplP8O65rQPUF-0-50e2df36c9bb30ecf81dc18cddee0863)
程序实例ch5_9.py:人体健康体重指数判断程序,这个程序会要求输入身高与体重,然后计算BMI指数,由这个BMI指数判断体重是否正常。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P89_48293.jpg?sign=1739489691-OpTRnXwFNXTU0Io81mmFxgJghRmNpk3Y-0-55b873f554c0f9e3b19c035f31c14328)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P90_48761.jpg?sign=1739489691-hEdufJz4cpZE97BsaV0Va1zw0MaKcBIL-0-68c4c22d7cd90c421cd56a2c6ffe3f9b)
上述程序第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=1739489691-9RTLemN8o0ZBhQK0VBoCYbSZwm7RyU3b-0-29fc4d56f6753785f570cea696dfcce3)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P91_49204.jpg?sign=1739489691-82owyAkavH9Y4B71X2uJfwS5yC0JJEiH-0-e3d3cf81b4c55df83a86ab994936cfdc)
0~7的数字基本上可用3个二进制表示,为000~111。其实所问的3个问题,基本上只是了解特定位是否为1。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P91_49207.jpg?sign=1739489691-IAK7fkIKPTvQou6xdKKoo4kl7nSGOFEi-0-dcf58b07d7af7c9e973c9e671860f524)
了解了以上概念,我们可以再进一步扩充上述实例猜测一个人生日的日期,一个人生日的日期是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=1739489691-Sr7zx6eoLgZrAaONOiCNj2vUKMUAUTQ4-0-953131086bec34818bc65ec2df061bb4)
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P92_49647.jpg?sign=1739489691-dG6eWv4GGxShElQ7ntkAQ3isqSKAE3W8-0-dead75bd1d2bb992c3c9bc53f73a2df2)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P92_49650.jpg?sign=1739489691-3EN34PGHeeHucQrJRobwK11JP9aOlegN-0-28ffaadb34577f0b5c37106bcf4401f9)
5-8-3 十二生肖系统
在中国除了使用公元年份代号,也使用鼠、牛、虎、兔、龙、蛇、马、羊、猴、鸡、狗、猪当作十二生肖,每12年是一个周期,1900年是鼠年。
程序实例ch5_12.py:请输入你出生的公元年19××或20××,本程序会输出相对应的生肖年。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P93_50091.jpg?sign=1739489691-gyTB4d8yKBXwXPj83i62HrxREkpCveX7-0-5b03a981f4555fadb078936b00dd8233)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P93_50094.jpg?sign=1739489691-xpgDZ4wEJycV2MaCTUaZLM7MkOiH87kS-0-14435966f324df85b1d6dff2dda6206d)
注 以上是用公元日历,十二生肖年是用农历年,所以年初或年尾会有一些差异。
5-8-4 求一元二次方程式的根
在中学数学中,可以看到下列一元二次方程式:
ax2 + bx + c = 0
可以用下列方式获得根。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P93_192510.jpg?sign=1739489691-nJI2WfM6235wY3z1s59XJ7zC1wTsOa5q-0-e2aabebe4e6d9b06273b0f53bb0c1130)
上述方程式有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=1739489691-mQw0YIALryjrUQwsmKbixxlGwcVZzeK4-0-62c7700dee2f0c7c6ebcca3ce9e2cdc2)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P94_50555.jpg?sign=1739489691-XISiVdVuyyzQ3TnKUDYsqMCmqiyQ2QsG-0-4cdb89825711281743e916a9de47a118)
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=1739489691-4q8O1WRP25C3Fnd62cO0qubiruFLiPwt-0-2863e408c558db77d082bb9294271b0b)
在上述公式中,如果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=1739489691-SlDQabyKWqtzZtR86nz1dQ3b4xI7sLZD-0-ac69c994a04c0dead7fb4caabb3e24cb)
执行结果
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P94_50578.jpg?sign=1739489691-CE2PNc38GvgUMmlEDn04nu8NOjaHf8l9-0-7d9006a08ad8d3886048d1ae613b9d81)
习题
1. 请改为不使用abs( )函 数重新设计ch5_2.py程序。(5-3节)
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P95_51021.jpg?sign=1739489691-Jjd88yvRPkfHymoKgbeISZ0cmNAqYOaX-0-b4d8bae02e3ba27c7460cce24534f545)
2. 请输入3个数字,本程序可以将数字由大到小输出。(5-3节)
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P95_51024.jpg?sign=1739489691-A1XyHBPHIjj7VB3BqwEPqVMrvCng5szq-0-d898d46d2064cf83b18813868e932925)
3. 有一个圆半径是20,圆中心在坐标(0,0)位置,请输入任意点坐标,这个程序可以判断此点坐标是不是在圆内部。(5-4节)
提示 可以计算点坐标距离圆中心的长度是否小于半径。
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P95_51035.jpg?sign=1739489691-5LHlGivudyOgeNJb1yzWZPnEjt86kTqT-0-f5b611d36ea26974ffa72af9facb82aa)
4. 请设计一个程序,如果输入是负值则将它改成正值输出,如果输入是正值则将它改成负值输出。(5-4节)
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P95_51038.jpg?sign=1739489691-dV11kffFlK2r4CZDiwf76sQ8PmfPT0bY-0-dcc076f2b845d902e3ede7e5b22c1b48)
5. 用户可以先选择华氏温度与摄氏温度转换方式,然后输入一个温度,可以转换成另一种温度。(5-5节)
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P95_51041.jpg?sign=1739489691-FS8QcKk0pDvgkq1AnoLZ2gyYg2rs82q8-0-e69e95ec25dc1a5fc352bda1f722aba0)
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=1739489691-bsYEjy9XS6xyGjcFkTfn3JARzgp8xakI-0-849596f118c839874620c99bb718d255)
7. 假设今天是星期日,请输入天数days,本程序可以响应days天后是星期几。(5-5节)
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P96_51470.jpg?sign=1739489691-tydbzYGMhxa4zjO67QRDvN7urg7fln0u-0-51e11679cdec524c3e9edef343949780)
8. 三角形边长的要求是两边长加起来大于第三边,请输入3个边长,如果这3个边长可以形成三角形则输出三角形的周长。如果这3个边长无法形成三角形,则输出这不是三角形的边长。(5-6节)
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P96_51473.jpg?sign=1739489691-TU6fnteLm86E3MXzF7bn0VHnrgCUHtRr-0-8c60e63c04a8d0be27233930208a25e6)
9. 扩充设计ch5_9.py,列出中国BMI指数区分的结果表。(5-7节)
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P96_51476.jpg?sign=1739489691-jj37qyO2lK9rTbRhhCkouK4vEfcEpydK-0-3cf6f8bf09e8e2b108b07166dd39f8fa)
10. 请参考ch5_13.py,但是修改为在屏幕上输入a, b, c三个数值,彼此用逗号隔开,然后计算此一元二次方程式的根,先列出有几个根。如果有实数根则列出根值,如果没有实数根则列出没有实数根,然后程序结束。(5-7节)
![](https://epubservercos.yuewen.com/371221/17274856804199906/epubprivate/OEBPS/Images/Figure-P97_51904.jpg?sign=1739489691-Hdp0HQdeblI3HLXBxoWtD4Pu31RhDZfD-0-76f6421cdcd1597078df7ef40fe4b672)
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=1739489691-goftrekQWSTjITkDx5uTHlvp8vQTTTG0-0-f9cdff6627ba576549fc950eff02ce85)