![Python实战指南:手把手教你掌握300个精彩案例](https://wfqqreader-1252317822.image.myqcloud.com/cover/214/44510214/b_44510214.jpg)
4.2 分支语句
案例72 单路分支
导语
单路分支代码由简单的if语句构成,其格式为:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P111_80650.jpg?sign=1738862048-c7zvDYT3sgCQoUszfCB12oiUOAx6UGB4-0-7996df3b8d6fd5377d592916e6890240)
当if后面的条件表达式成立(即表达式的运算结果为True)时,代码块被执行,否则就跳过此代码块继续运行。例如:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P111_80651.jpg?sign=1738862048-Cs8XoM54DBjgWoFH9fXabutpfrUby4yr-0-7ed5698f3d60787d5890f54b9263b7ec)
此函数首先判断参数s所传递的字符串的字符个数是否小于5,如果是,就返回字符串“至少需要5个字符”;如果字符串长度并非小于5,if语句下面的return语句被忽略,进而执行if语句以外的return语句,返回字符串“字符串长度符合要求”。
操作流程
步骤1:调用input函数,获取键盘输入的内容,并存放在in_str变量中。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P111_80652.jpg?sign=1738862048-0MWIhyjdEVWm4rUZHIVAglkwtN61oDP2-0-c417550ddc62a1f19a6c5e904f929a86)
步骤2:对输入的内容进行分析,如果内容是以“∗”开头的,就打印出提示信息,否则不做任何处理。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P111_80653.jpg?sign=1738862048-5HpDQgIqvZDupofC6sKil1cZH1VvNJAy-0-a3007ef02f498493d07087c662c28762)
步骤3:运行案例,假设输入“∗admin”,由于输入的内容是以“∗”字符开头的,所以屏幕上会打印提示消息。具体如下:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P111_80654.jpg?sign=1738862048-ICbJ6bcBmBCM17L3gMyW8g64een7W2ec-0-3602bb38517d2956f44894ed7e20f9b4)
案例73 双路分支
导语
双路分支的if语句格式如下:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P111_80656.jpg?sign=1738862048-9V1zdVFWw7b3dXRi51y9TAB3F9EE47M3-0-70374b710ac73df0739594707cadbe2b)
如果条件表达式成立,就执行“代码块1”,否则就执行“代码块2”。相比单路分支,if…else…语句可以在判断条件不成立时做出处理。
操作流程
步骤1:获取键盘输入内容。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P112_80658.jpg?sign=1738862048-CZsfTfnyOrqB4tqNRnnk0HFEPduQKrSl-0-b5ed67951536f71b1d55519624e01e24)
步骤2:将输入的字符串转换为int类型。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P112_80659.jpg?sign=1738862048-ol2Y3j4BK73PJAzeHkSBAPLh3SwcJIJv-0-b2931e0f1c48a8d8681a2110348c638b)
步骤3:分析num变量能不能被3整除。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P112_80660.jpg?sign=1738862048-e2Us5WckfFXR8Z7lLot6Gxw86v44qW3A-0-39a4b9a11d3b0dd0bc037274479f5832)
运算符%用于进行除法运算,然后返回余数。如果num可以被3整除,余数为0,否则不为0。
步骤4:依次输入12、87、43、65四个整数进行测试,测试结果如下:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P112_80661.jpg?sign=1738862048-eSrEsJRDUk2LAjAFpJBsJyAkR7DX9e33-0-2f6d22cb4df2eba23b6414745d5497c6)
案例74 更复杂的分支语句
导语
在需要判断多个条件时,if语句中可以连用多个elif子句,格式如下:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P112_80662.jpg?sign=1738862048-MMJzclcS2dbmsHibjDcY3Y0flLJgsYrZ-0-0533f05bbf38cfb1fb7292e799f640ca)
最后的else子句是当上面所有if或elif语句的条件皆不成立的情况下执行。
例如,下面代码对密码字符串进行分析。如果长度小于6个字符,属于不安全密码;如果长度在6~9个字符,安全强度为中等;如果长度在9~12个字符,安全强度为高;如果长度在12个字符以上,安全强度非常高。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P113_80666.jpg?sign=1738862048-e4BGtzugU8CIIRw7y8t3t24fHp2yWotu-0-0cc7ae9958bbcf1a449708e1d81fa853)
假设用户输入的密码为“a2dlo”,会提示“此密码不安全”;要是输入“2dg8oelitx5gi”,会提示“此密码安全度非常高”,因为这字符串的长度大于12,else子句之前的if和elif子句都不符合条件,只能执行else子句中的代码。
下面案例中,首先随机生成50个整数(0~100,包括0和100),然后分别统计大于或等于0且小于30、大于或等于30且小于50、大于或等于50且小于80的整数个数,以及未符合上述条件的整数个数。
操作流程
步骤1:导入random模块。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P113_80667.jpg?sign=1738862048-shU4GTMCMGy8wCpPe4Kpo2rixO8H2h2z-0-057d27c58ea0695ab81512d60a1d5ebb)
步骤2:声明一个变量nums,初始化为空列表,稍后用于存放随机生成的整数值。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P113_80668.jpg?sign=1738862048-UfFNVrYDUal4MlVJyd8GpQV112X0bQML-0-fef3e96f3fb55ec4606ad8af39af1579)
步骤3:随机生成整数,并存放在nums列表中。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P113_80669.jpg?sign=1738862048-qhNGFj2XZA2bfZbj3ZkgWvHjqds1dZ5f-0-7f0c4e70f69ba9cc98f52c91440b1ad6)
随机算法在生成整数时,可能会出现重复的数值,因此在while循环中要跳过重复的整数值。
步骤4:声明四个变量,用于记录各个统计项目的结果。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P114_80671.jpg?sign=1738862048-mS9fvTXJuxM0xmVW0zDG3yFpBycizd4Z-0-233248c96a55e2d3b39624f915294474)
步骤5:用for遍历nums列表,并用if…elif…else语句进行统计。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P114_80672.jpg?sign=1738862048-nAoSh9VrI3ZDAAqQvlsVQoz0ktjPDSGM-0-8aeda087f98c1628e66848c770ca0d77)
步骤6:输出统计结果。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P114_80673.jpg?sign=1738862048-Nmf22Kwjy725OmyNQSjEhoDswFDny2uw-0-5fd3e291555fe7bbc241ac8cf12e5d83)
步骤7:运行案例,屏幕输出内容如下:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P114_80674.jpg?sign=1738862048-cxo1leRPhjcO6MWseITJgc1nYFT9CtRM-0-a29f14d33acdffc50ea2f978377e0158)
案例75 分支语句的嵌套使用
导语
在实际应用中,if语句经常需要嵌套使用——即if语句块中又包含if语句块。Python的代码层次是通过缩进来区分的,因此,在嵌套使用if语句时,代码的缩进量绝不能马虎,否则会出现混乱和错误。
例如,下面代码有两层分支语句,但由于代码缩进不规范,导致错误。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P115_80676.jpg?sign=1738862048-Lw1a7mHufT8eapfv8tzOTngoLWFRcyTe-0-583d07bf02e9442f7d3042e4e0798bb6)
正确的写法为:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P115_80677.jpg?sign=1738862048-825jgV69fKnfX2BFNOZbtdIOWD34mskC-0-83e25cdb8b47e29014a09df66bf53513)
本案例演示了一个分解质因数的过程,factor函数接收一个整数值,调用后会打印出该整数所分解出来的质因数信息。例如,调用factor(16),屏幕上会打印“16=2×2×2×2”。
factor函数中将嵌套使用if语句。
操作流程
步骤1:定义factor函数。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P115_80678.jpg?sign=1738862048-MZMnY6fxWwk9TqqUEtUyKnamiiNKqe7y-0-afe62a12f8e890892797bd94608f1893)
因为整数1与任何整数相乘的结果都等于原数,所以n的值至少应为2。变量x的值从2开始,在每一轮循环中,只有当n能被x整除并且相除的结果不为1时,x的值才会加上1。如果n能被x整除且整除的结果等于1,这时候质因数实际上已经完成分解了,没有必要再继续演算了,因此可以直接跳出循环。
步骤2:调用factor函数进行测试。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P116_80681.jpg?sign=1738862048-SroXfwkvt0qitp7rPMjsnBD6VrcTStXY-0-242a4b7c2568444768af80a084a438ce)
步骤3:运行案例代码,屏幕输出结果如下:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P116_80682.jpg?sign=1738862048-6WrzdrJysTuHPbQPhiCkUpLfN7Qf5qoX-0-ba42045a70bff0626647901391e67752)