
4.2 分支语句
案例72 单路分支
导语
单路分支代码由简单的if语句构成,其格式为:

当if后面的条件表达式成立(即表达式的运算结果为True)时,代码块被执行,否则就跳过此代码块继续运行。例如:

此函数首先判断参数s所传递的字符串的字符个数是否小于5,如果是,就返回字符串“至少需要5个字符”;如果字符串长度并非小于5,if语句下面的return语句被忽略,进而执行if语句以外的return语句,返回字符串“字符串长度符合要求”。
操作流程
步骤1:调用input函数,获取键盘输入的内容,并存放在in_str变量中。

步骤2:对输入的内容进行分析,如果内容是以“∗”开头的,就打印出提示信息,否则不做任何处理。

步骤3:运行案例,假设输入“∗admin”,由于输入的内容是以“∗”字符开头的,所以屏幕上会打印提示消息。具体如下:

案例73 双路分支
导语
双路分支的if语句格式如下:

如果条件表达式成立,就执行“代码块1”,否则就执行“代码块2”。相比单路分支,if…else…语句可以在判断条件不成立时做出处理。
操作流程
步骤1:获取键盘输入内容。

步骤2:将输入的字符串转换为int类型。

步骤3:分析num变量能不能被3整除。

运算符%用于进行除法运算,然后返回余数。如果num可以被3整除,余数为0,否则不为0。
步骤4:依次输入12、87、43、65四个整数进行测试,测试结果如下:

案例74 更复杂的分支语句
导语
在需要判断多个条件时,if语句中可以连用多个elif子句,格式如下:

最后的else子句是当上面所有if或elif语句的条件皆不成立的情况下执行。
例如,下面代码对密码字符串进行分析。如果长度小于6个字符,属于不安全密码;如果长度在6~9个字符,安全强度为中等;如果长度在9~12个字符,安全强度为高;如果长度在12个字符以上,安全强度非常高。

假设用户输入的密码为“a2dlo”,会提示“此密码不安全”;要是输入“2dg8oelitx5gi”,会提示“此密码安全度非常高”,因为这字符串的长度大于12,else子句之前的if和elif子句都不符合条件,只能执行else子句中的代码。
下面案例中,首先随机生成50个整数(0~100,包括0和100),然后分别统计大于或等于0且小于30、大于或等于30且小于50、大于或等于50且小于80的整数个数,以及未符合上述条件的整数个数。
操作流程
步骤1:导入random模块。

步骤2:声明一个变量nums,初始化为空列表,稍后用于存放随机生成的整数值。

步骤3:随机生成整数,并存放在nums列表中。

随机算法在生成整数时,可能会出现重复的数值,因此在while循环中要跳过重复的整数值。
步骤4:声明四个变量,用于记录各个统计项目的结果。

步骤5:用for遍历nums列表,并用if…elif…else语句进行统计。

步骤6:输出统计结果。

步骤7:运行案例,屏幕输出内容如下:

案例75 分支语句的嵌套使用
导语
在实际应用中,if语句经常需要嵌套使用——即if语句块中又包含if语句块。Python的代码层次是通过缩进来区分的,因此,在嵌套使用if语句时,代码的缩进量绝不能马虎,否则会出现混乱和错误。
例如,下面代码有两层分支语句,但由于代码缩进不规范,导致错误。

正确的写法为:

本案例演示了一个分解质因数的过程,factor函数接收一个整数值,调用后会打印出该整数所分解出来的质因数信息。例如,调用factor(16),屏幕上会打印“16=2×2×2×2”。
factor函数中将嵌套使用if语句。
操作流程
步骤1:定义factor函数。

因为整数1与任何整数相乘的结果都等于原数,所以n的值至少应为2。变量x的值从2开始,在每一轮循环中,只有当n能被x整除并且相除的结果不为1时,x的值才会加上1。如果n能被x整除且整除的结果等于1,这时候质因数实际上已经完成分解了,没有必要再继续演算了,因此可以直接跳出循环。
步骤2:调用factor函数进行测试。

步骤3:运行案例代码,屏幕输出结果如下:
