![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=1739297375-F0KWEmsL1odoy2B1LYZ5HXlw01qSX041-0-eef30a14e0c1fa318aa46544e63fc987)
当if后面的条件表达式成立(即表达式的运算结果为True)时,代码块被执行,否则就跳过此代码块继续运行。例如:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P111_80651.jpg?sign=1739297375-yH19x4KcEMez7WSWUR7E1bP9hUvDfgir-0-136494e3128c27813a3caaae9371e4cd)
此函数首先判断参数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=1739297375-MGqQdfHs17cXdYoQC2oeAAkHDnhwA5P7-0-c26c6b896a687587ccdec152eddd4b16)
步骤2:对输入的内容进行分析,如果内容是以“∗”开头的,就打印出提示信息,否则不做任何处理。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P111_80653.jpg?sign=1739297375-cmuYyKHybKGQMHfbZmmc2BJdwocqX8IF-0-2bdfdabf3e034cab33a35b81f3ac640e)
步骤3:运行案例,假设输入“∗admin”,由于输入的内容是以“∗”字符开头的,所以屏幕上会打印提示消息。具体如下:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P111_80654.jpg?sign=1739297375-JRUP0JbCjoTWDULto9OIi7jiZnsKZYz8-0-47fa582dccd1339ede9360ff3d6bc18b)
案例73 双路分支
导语
双路分支的if语句格式如下:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P111_80656.jpg?sign=1739297375-OvHGMURUQrcfc6IfyuGiC6LtAL1OHhzK-0-6aada51aa6ac4b24c84ee2771e0b52fa)
如果条件表达式成立,就执行“代码块1”,否则就执行“代码块2”。相比单路分支,if…else…语句可以在判断条件不成立时做出处理。
操作流程
步骤1:获取键盘输入内容。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P112_80658.jpg?sign=1739297375-SVlfmp8AOpEahzHd97UYFhK082VkYzoF-0-f6e9658371f32638e04f69b90d2cacc9)
步骤2:将输入的字符串转换为int类型。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P112_80659.jpg?sign=1739297375-TbuO5r1BGxo9RyigYKKWZZq6ftucnWTb-0-51f2f910f9e83c2e0a83ad747871e1c7)
步骤3:分析num变量能不能被3整除。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P112_80660.jpg?sign=1739297375-eL1r7dBNYoEWv8Ye1wAZTk7PIm00os4W-0-6f3d6570fec5f3d1b67ab02435a0fa83)
运算符%用于进行除法运算,然后返回余数。如果num可以被3整除,余数为0,否则不为0。
步骤4:依次输入12、87、43、65四个整数进行测试,测试结果如下:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P112_80661.jpg?sign=1739297375-0zXNwS4MARtMV5b1WmyRZ1WaazqG9erG-0-6b58c0e164e9e47954cf9d33605796f2)
案例74 更复杂的分支语句
导语
在需要判断多个条件时,if语句中可以连用多个elif子句,格式如下:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P112_80662.jpg?sign=1739297375-4YmTIJKLnNTV3hi05qgRpgGUmJg2ZEZN-0-97401e2f003526cb8dd6459a15239433)
最后的else子句是当上面所有if或elif语句的条件皆不成立的情况下执行。
例如,下面代码对密码字符串进行分析。如果长度小于6个字符,属于不安全密码;如果长度在6~9个字符,安全强度为中等;如果长度在9~12个字符,安全强度为高;如果长度在12个字符以上,安全强度非常高。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P113_80666.jpg?sign=1739297375-a8eL2hYEiDILwqAUYj8LnC8FAiJePopU-0-c85a8ef4a5960fc516ac2452d48d7a00)
假设用户输入的密码为“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=1739297375-DFuRFlK225MEC9NcvsuUMhUuZRVyo9O8-0-65dfcc0c19d1d1c25077de2f3c6cb7ae)
步骤2:声明一个变量nums,初始化为空列表,稍后用于存放随机生成的整数值。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P113_80668.jpg?sign=1739297375-X7RWyXQnA7MunIsXvujPZ7VCiSDeCRgj-0-87b71542704a76b415fd612ad9c130da)
步骤3:随机生成整数,并存放在nums列表中。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P113_80669.jpg?sign=1739297375-hbcbXkVw0oFfiljIQshbuJgVSjUablOZ-0-f58c2faefd13608b6bd8849e8ddf810d)
随机算法在生成整数时,可能会出现重复的数值,因此在while循环中要跳过重复的整数值。
步骤4:声明四个变量,用于记录各个统计项目的结果。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P114_80671.jpg?sign=1739297375-HheRg0O8YwiaMHNIMQOCadvLXR4koRGq-0-cdf0331a0632d35aed2244ae94c9a02d)
步骤5:用for遍历nums列表,并用if…elif…else语句进行统计。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P114_80672.jpg?sign=1739297375-05cbV9aTlPkF5Hdzt8HVpq97VluzfMat-0-f19fd70a744d70ec6a97fef6deaeba14)
步骤6:输出统计结果。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P114_80673.jpg?sign=1739297375-0sfnwRwPfQ4NqxUFKRdqlD0r8hkte1NI-0-ff1509b83cbac791ed13bec463491c80)
步骤7:运行案例,屏幕输出内容如下:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P114_80674.jpg?sign=1739297375-vnsPhWjfdr85LnopuRWYlm8TKSEDT3jj-0-7e39b8afc16cfd923ca3e77872e1cb3c)
案例75 分支语句的嵌套使用
导语
在实际应用中,if语句经常需要嵌套使用——即if语句块中又包含if语句块。Python的代码层次是通过缩进来区分的,因此,在嵌套使用if语句时,代码的缩进量绝不能马虎,否则会出现混乱和错误。
例如,下面代码有两层分支语句,但由于代码缩进不规范,导致错误。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P115_80676.jpg?sign=1739297375-wz384KSsSNcXHDV3DO8napx9goS9dFtO-0-23a0964586f74ce0b806869ef5b4652e)
正确的写法为:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P115_80677.jpg?sign=1739297375-cvGGoLJsepZ2BDVh0Cox7esL6cFngDA0-0-6709779dd76d5732573a7e877649760b)
本案例演示了一个分解质因数的过程,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=1739297375-xzs5lMkdmH6pdM670Ld2y3uDfZH6wCGW-0-2c8cf5a73b48907d88fec8a8ec9b4b92)
因为整数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=1739297375-Vv4EOSodr9pwM90Pp8R87srECvoK0Qsp-0-0e39adddac80d986b1b91cb46b660bd9)
步骤3:运行案例代码,屏幕输出结果如下:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P116_80682.jpg?sign=1739297375-SyIYmymusPkGHT59H5bmles2yI3Sq8Z8-0-322ac6a253d11527954579565ac598e4)