购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.5 if多条件分支语句

通过前面的学习可知,使用if语句可以处理条件成立的情况,使用if…else…语句可以处理条件成立和条件不成立两种情况。如果有更多的可能性,则可以使用if…elif..else…语句,语法结构如图3-17所示。

图3-17 if多条件分支语句的语法结构

● if是关键字,固定写法,不能有任何变化。

● conditional_test1是条件测试表达式,返回的结果是逻辑值(True或False)。

● do something1是conditional_test1返回值为True时执行的处理语句。

● elif是关键字,后面可以继续写条件测试表达式。

● conditional_test2表示当conditional_test1条件不成立时,可以运行该条件测试表达式。

● ……表示可以继续写条件测试表达式和处理语句。

● else是关键字,固定写法,不能有任何变化。注意,书写else关键字时要与if关键字对齐,相对if关键字,else是没有缩进的。

● do something3是上面所有条件都不成立时执行的处理语句。

3.5.1 if多条件分支语句标准用法

有一个数字列表[69,89,95,54],对这些数字做等级判断,判断条件及等级如表3-1所示。

表3-1 判断条件及等级

梳理一下这个案例的运算逻辑:如果列表中的数字大于或等于90,则返回“优”;否则,如果列表中的数字大于或等于80,则返回“良”;否则,如果列表中的数字大于或等于60,则返回“中”;如果上面所有的条件均不成立,则返回“差”。最后完成的效果如图3-18所示。

图3-18 if多条件分支语句案例效果

本案例代码如下所示,代码在“Chapter-3-16.py”文件中。

第1行代码 lst=[69,89,95,54] ,将列表赋值给lst变量。

第2行代码 for num in lst: ,将lst变量中的每个数字赋值给num变量。

第3~8行代码,从大到小依次判断num变量中的数字属于哪个等级。

第9行和第10行代码,当上面的所有条件均不成立时,返回“差”。

3.5.2 if多条件分支语句应用案例:对分数进行等级判断

本案例对“分数”列的分数进行等级判断,大于或等于90分为“优”,大于或等于80分且小于90分为“良”,大于或等于60分且小于80分为“中”,其余的均为“差”,最后将判断结果写入“等级”列,处理前后的效果如图3-19所示。

图3-19 对分数进行等级判断处理前后的效果

本案例代码如下所示,代码在“Chapter-3-17.py”文件中。

第1行和第2行代码 import xlrd from xlutils.copy import copy ,分别用来导入需要使用的库。

第3行和第4行代码 wb=xlrd.open_workbook('Chapter-3-17-1.xls') ws=wb.sheet_by_name('分数表') ,分别读取“Chapter-3-17-1.xls”工作簿和“分数表”工作表。

第5行代码 nwb=copy(wb) ,复制“Chapter-3-17-1.xls”工作簿,生成一个副本。

第6行代码 nws=nwb.get_sheet('分数表') ,读取工作簿副本中的“分数表”工作表,该工作表便有了写入的权限。

第7行代码 col_vals=ws.col_values(1) ,读取“分数表”工作表中B列的分数。

第8行代码 row_num=0 ,初始化row_num变量,并在后面的循环语句中进行累加,将累加的数字作为写入单元格时的行号。

第9行代码 for num in col_vals ,将col_vals中的分数逐个循环赋值给num变量,便于后续做判断。

第10~19行是循环体中的语句。

第10行代码 if type(num)==float ,判断循环读取出来的num变量是否是float类型。如果条件成立,则执行等级判断。

第11~18行代码,从大到小判断每个分数属于哪个等级,并将等级写入副本“分数表”工作表的C列单元格。

第19行代码 row_num+=1 ,对row_num变量累加1,循环多少次,就累加多少次,每次累加的数字被作为写入单元格时的行号。

第20行代码 nwb.save('Chapter-3-17-1.xls') ,完成数据处理后进行保存。注意,保存的是工作簿副本nwb,而不是wb,相当于用工作簿副本nwb替换了wb。如果保存的工作簿名称不相同,则相当于另存工作簿。 7nTp2CN18fN68Cfail0QupMIbHWJ/SKrijFX3J53d1qa0Cce2fqtbdH8mvcm5rfQ

点击中间区域
呼出菜单
上一章
目录
下一章
×