![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=1739304020-RSPWVWWDSyzbZWeYjU9g2Y7Ir0oWXJx7-0-4355b2c6e2b16453f7d35b45f8f73361)
当if后面的条件表达式成立(即表达式的运算结果为True)时,代码块被执行,否则就跳过此代码块继续运行。例如:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P111_80651.jpg?sign=1739304020-79JI7tzk8P6S7BogUAUJguEDAihsCH58-0-5c525a46f03e58dfb0f485843b3026e2)
此函数首先判断参数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=1739304020-V93mSIEYImYfoQpguKBXRBYCORCMPlxq-0-02fb8dea75308130cc49edc9c1e5f894)
步骤2:对输入的内容进行分析,如果内容是以“∗”开头的,就打印出提示信息,否则不做任何处理。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P111_80653.jpg?sign=1739304020-6tGZlloxUA5hWWI9OpVyNfdwhaQytV6D-0-bc05ddb45aced9b1e23f01c34c12ed37)
步骤3:运行案例,假设输入“∗admin”,由于输入的内容是以“∗”字符开头的,所以屏幕上会打印提示消息。具体如下:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P111_80654.jpg?sign=1739304020-zsSI4wMKuTMPf9n2ddczhCRe02ysL7a0-0-181e4d6af3e74a51abcf7d0b48ed1c03)
案例73 双路分支
导语
双路分支的if语句格式如下:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P111_80656.jpg?sign=1739304020-qdFGWLz42KFlwBKcShav4ylQqnPLRXwx-0-8afcdd94ae611b73eb55782b057aade1)
如果条件表达式成立,就执行“代码块1”,否则就执行“代码块2”。相比单路分支,if…else…语句可以在判断条件不成立时做出处理。
操作流程
步骤1:获取键盘输入内容。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P112_80658.jpg?sign=1739304020-nUyp6duo713MoapJBxFnRFSMO7bCBlQp-0-3fc5e504b88185ced5ea9da83f760ac9)
步骤2:将输入的字符串转换为int类型。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P112_80659.jpg?sign=1739304020-NxQnrjtGtVdpLUIVhLWe7NCABB7xKPCc-0-e744d32ef1abac6a5d1316496555e3b6)
步骤3:分析num变量能不能被3整除。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P112_80660.jpg?sign=1739304020-ZtpHntYkyysiECfMVw5STsSK47Vu1f4B-0-6ba6904c0901c0e60e2cb26fa042fc7e)
运算符%用于进行除法运算,然后返回余数。如果num可以被3整除,余数为0,否则不为0。
步骤4:依次输入12、87、43、65四个整数进行测试,测试结果如下:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P112_80661.jpg?sign=1739304020-i2kQuMrKEQWrIXUCwTzW9PeEodladucX-0-22632f338e8860a6af9f186f9c7288bb)
案例74 更复杂的分支语句
导语
在需要判断多个条件时,if语句中可以连用多个elif子句,格式如下:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P112_80662.jpg?sign=1739304020-wbaTJfxtey0xsT5WXSuKYEP7wkFAwbfy-0-b0b896d86c9bba389eca278c92e70fd2)
最后的else子句是当上面所有if或elif语句的条件皆不成立的情况下执行。
例如,下面代码对密码字符串进行分析。如果长度小于6个字符,属于不安全密码;如果长度在6~9个字符,安全强度为中等;如果长度在9~12个字符,安全强度为高;如果长度在12个字符以上,安全强度非常高。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P113_80666.jpg?sign=1739304020-DegY1Rbtbi19q05rpQcQfWHArT1aYwPG-0-7362146187555420dd94223de5cd8881)
假设用户输入的密码为“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=1739304020-M8M8KCr305lJEHMy2Ct67Ho3NaBx4X3k-0-7a49ee67d5b480981cd5f1aa4864e997)
步骤2:声明一个变量nums,初始化为空列表,稍后用于存放随机生成的整数值。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P113_80668.jpg?sign=1739304020-gW0DYVsneeSwC3dETgPin5FZ9RFxyNiS-0-e014df2ab3852d58c264f25f79b5d481)
步骤3:随机生成整数,并存放在nums列表中。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P113_80669.jpg?sign=1739304020-qbT61cfdOvMn8fIKQiGTXWjvKOpCb7sr-0-debe26473c59c1eafe5c8fe687c7475c)
随机算法在生成整数时,可能会出现重复的数值,因此在while循环中要跳过重复的整数值。
步骤4:声明四个变量,用于记录各个统计项目的结果。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P114_80671.jpg?sign=1739304020-UHDrsiQdsTHUdxxa7GYMAXI98pEBJIA8-0-1a09e9f712552c3e6c62c928ac3c9400)
步骤5:用for遍历nums列表,并用if…elif…else语句进行统计。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P114_80672.jpg?sign=1739304020-HkDdj9wknbkb469uZG06kKkR8R4ub2H9-0-dfcf8bcd9d46d922a809eb71141c8e92)
步骤6:输出统计结果。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P114_80673.jpg?sign=1739304020-9mo3afxWgKSM1vEAHVJzsr4UAqEgATEx-0-2ecdfabdda8967f49c7362191c545b9d)
步骤7:运行案例,屏幕输出内容如下:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P114_80674.jpg?sign=1739304020-rcDUPnTZaMSwDrplX3L8zb9mpOvmwomX-0-5556b41aebc117a6de8f1b491daf9224)
案例75 分支语句的嵌套使用
导语
在实际应用中,if语句经常需要嵌套使用——即if语句块中又包含if语句块。Python的代码层次是通过缩进来区分的,因此,在嵌套使用if语句时,代码的缩进量绝不能马虎,否则会出现混乱和错误。
例如,下面代码有两层分支语句,但由于代码缩进不规范,导致错误。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P115_80676.jpg?sign=1739304020-0O74NlRJlfukaYGhUuQAsg1CJszZzOq7-0-f7ef3140bcfca0317819795b4db711d2)
正确的写法为:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P115_80677.jpg?sign=1739304020-YYsWSA66DKTW1HuwbPDBFRmCfFK3yiOC-0-5d1c04662764b979bdbb46f04db3064c)
本案例演示了一个分解质因数的过程,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=1739304020-V03YqvfS1WfVXf4f2oGXoGT2u7SXTN9Y-0-e194739e75fbc9625c8ca706cf374de6)
因为整数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=1739304020-kLRY78sVST732GChcuxq2JDIGd0YtPLV-0-3a4da10f5efcac5f1b2e8a40d9e47ca4)
步骤3:运行案例代码,屏幕输出结果如下:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P116_80682.jpg?sign=1739304020-7IHCPsgrrfMIHAScBwoPI8LmnKmV8ojl-0-0f45d7e497fe25475ab0364d028f1bbc)