注:该学习笔记是根据曾志贤老师编写的《从Excel到Python,用Python轻松处理Excel数据》所学习整理的笔记。
第三章 循环语句与分支语句 目录- 第三章 循环语句与分支语句
- 一、for循环
- 1、for循环字符串
- 2、for循环列数
- 案例一、for循环批量新建工作簿
- 案例二、for循环的嵌套制作乘法表
- 二、while循环
- 1、while循环序列数
- 2、while循环字符串
- 案例一、while循环批量新建工作表
- 3、while嵌套循环语句
- 案例二、while嵌套循环批量新建工作簿、工作表
- 三、if条件语句
- 1、if条件语句及标准用法
- 案例一、if条件语句根据分数判断等级
- 2、if条件分支语句的标准用法和单行写法
- 案例二、if条件分支语句对数字进行分类计数
- 3、if多条件分支语句标准用法
- 案例三、if多条件分支语句对分数进行等级判断
- 四、break语句
- 1、break语句在while和for循环中的应用
- 案例一、break语句标记达标时的首个月份
- 五、continue语句
- 1、continue语句在while和for循环中的应用
- 案例一、continue语句统计每次累计达标数
一、for循环 1、for循环字符串Python中的for循环语句可以遍历任何序列项目,比如字符串、列表、元组、集合等。
for i in 'python': print(i)
2、for循环列数
- for:关键字(代表开始自循环)
- i:变量
- in:关键字
- ‘python’:迭代器(理解为循环内容)
- ::关键字(代表到此为止)
- 第二行首缩进四个空格,Python对格式要求非常严格。
range函数
语法结构:
range(start,stop[,step])
参数说明:
- start:表示起始值,默认从0开始。
- stop:表示终止值,但不包括宗旨值。(左闭右开)
- step:步长,默认为1。
for i in range(1,10,1) #正循环,正循环步长为1时可以不写,默认为1
print(i)
for j in range(10,1,-1) #反循环
print(j)
for k in range(10,1,-1)
print('-'+str(k)+'-') #由于变量是数字,与文字组合时,必须用str函数将它转换为字符串
案例一、for循环批量新建工作簿
import xlwt
for i in range(1,12+1):
nwb_name='{}{}'.format(i,'月.xls') #第一种写法
nws_name=str(i)+'月' #第二种写法
nwb=xlwt.Workbook('utf-8')
nws=nwb.add_sheet(nws_name) #工作表名引用循环的值
nwb.save('2022年\'+nwb_name) #保存到该.py文件的子文件“2022年”下。注意\才能识别为
案例二、for循环的嵌套制作乘法表
import xlwt
nwb=xlwt.Workbook('utf-8')
nws=nwb.add_sheet('乘法表')
for i in range(1,10):
for j in range(1,i+1):
txt='{}X{}={}'.format(j,i,j*i)
nws.write(i,j,txt)
nwb.save('乘法表.xls')
注意缩进格式
二、while循环1、while循环序列数while循环的基本逻辑是:当条件为真(true)时,执行循环内的语句。当条件为假(false)时,退出循环。
i=1 while i<10: #当i小于10时,进入循环,否则退出循环 i +=1 #对i进行累加 print(i)2、while循环字符串
txt='python' i=0 while i案例一、while循环批量新建工作表 批量新建以2010年到2022年的年份命名的工作表。
import xlwt nwb=xlwt.Workbook('utf-8') i=2010 j=2022 while i3、while嵌套循环语句 利用while嵌套循环,制作乘法表。
i,j=0,0 while i<10: while j 案例二、while嵌套循环批量新建工作簿、工作表批量新建以2010年至2022年的年份命名的工作簿,并且每个工作簿中批量新建以1月至12月命名的工作表。
import xlwt i,j,k,l=2010,2022,1,12 #对4个变量进行赋值 while i<=j: #当i小于j时进入循环 nwb=xlwt.Worbook('utf-8') #新建工作簿 while k<=l: #当k小于l时进入循环 nwb.add_sheet('{}{}'.format(k,'月') #新建工作表,名为k月 k +=1 #对k进行累加 nwb.save('批量工作簿\'+'{}{}'.format(i,'年.xls') #当K循环结束时,保存工作簿,名为i年,存在当前.py文件的子文件夹“批量工作簿”内。 k=1 #将k恢复为初始值 i +=1 #对i进行累加三、if条件语句 1、if条件语句及标准用法if 100>=90: #当条件成立时,执行处理语句 print('成立') if 100<=90: #当条件不成立时,不执行处理语句 print('成立')案例一、if条件语句根据分数判断等级对“成绩工作簿”中的“成绩表”中的分数大于90分的输出“优秀”,并输入单元格C列,另存。
import xlrd #导入xlrd库 from xlutils.copy import copy #导入xlutils库中的copy模块中的copy函数 wb=xlrd.open_workbook('成绩工作簿.xls') #读取工作簿 ws=wb.sheet_by_name('成绩表') #读取工作表 col_val=ws.col_values(1) #获取指定列的值 nwb=copy(wb) #将读取的工作簿拷贝 nws=nwb.get_sheet('成绩表') #读取拷贝工作簿中的工作表 j=0 #赋值0,用作行号的累加 for i in col_val: #进行for循环,迭代器为获取的指定列的值 if type(i)==float and i>=90: #进行if判断,首先判断值是否为浮点数,并且值大于90 nws.write(j,2,'优秀') #在拷贝工作簿中的工作表的j行,C列填写“优秀” j +=1 #对j进行累加 nwb.save('成绩工作簿-1.xls') #保存拷贝的工作簿,并另存。2、if条件分支语句的标准用法和单行写法#标准写法 if 100>=90: #当条件成立时,执行处理语句 print('成立') else: #当条件不成立时,执行处理语句 print('不成立') #单行写法 print('成立') if 100>=90 else print('不成立')案例二、if条件分支语句对数字进行分类计数统计[95,89,69,100,88,94,91]列表中数字大于或等于90的个数和数字小于90的个数。
lst=[95,89,69,100,88,94,91] j,k=0,0 for i in lst: if i>=90: j +=1 else: k +=1 print('大于等于90的共有{}个,小于90的共有{}个'.format(j,k))3、if多条件分支语句标准用法对[69,89,95,54]数字进行等级划分判断,>=90优秀,>=80良好,>=60及格,<60不及格。
lst=[69,89,95,54] for i in lst: if i>=90: print('优秀') elif i>=80: print('良好') elif i>=60: print('及格') else: print('不及格')案例三、if多条件分支语句对分数进行等级判断对“成绩”工作簿中的“成绩”工作表中的分数进行判断,>=90优秀,>=80良好,>=60及格,<60不及格。并输入单元格C列,另存。
import xlrd from xlutils.copy import copy wb=xled.open_workbook('成绩.xls') ws=wb.sheet_by_name('成绩') col_vals=ws.col_values(1) nwb=copy(wb) nws=nwb.get_sheet('成绩') j=0 for i in col_vals: if type(i)==float: j +=1 if i>=90: nws.write(j,2,'优秀') elif i>=80: nws.write(j,2,'良好') elif i>=60: nws.write(j,2,'及格') else: nws.write(j,2,'不及格') nwb.save('成绩-1.xls')四、break语句1、break语句在while和for循环中的应用break语句用于终止循环。当while循环条件中没有false,或者for循环没有被全部循环完时,可以使用break语句终止循环。可以给break语句设置条件,当条件成立时运行break语句终止循环。
i=0 #break语句在while循环中的使用 while True: i +=1 print(i) if i==5: break #break语句在for循环中的使用 i=0 for j in [98,85,93,97,88,96]: if j>=90: i +=1 print(i) if i==5: break案例一、break语句标记达标时的首个月份如下图,在“业绩”工作簿中的“业绩”工作表,查找每个人在12个月中,业绩累计达到100时,对应的是哪个月。
import xlrd from xlutils.copy import copy wb=xlrd.open_workbook('业绩.xls') ws=wb.sheet_by_name('业绩') ws_nrs=ws.nrows #获取最大行号 ws_ncs=ws.ncols #获取最大列号 nwb=copy(wb) nws=nwb.get_sheet('业绩') for row_num in range(1,ws_nrs): #从1行开始循环到最大行 num=0 #清空计数 for col_num in range(1,ws_ncs): #从1列开始循环到最大列 num +=ws.cell_value(row_num,col_num) #把定位的值进行累加 if num>=100: #当累加等于或大于100时 nws.write(row_num,13,ws.cell_value(0,col_num)) #将对应的月份输出到新工作表的对应位置 break #终止循环 nwb.save('业绩-1.xls')五、continue语句1、continue语句在while和for循环中的应用break语句用于终止整个循环,
continue语句用于终止整个循环中的某次循环。
如果在循环体重执行了continue语句,则continue之后的语句在本次循环中不再执行,进入下一个循环。#在while循环中的运用 num=0 while num<6: num +=1 if num%2=0: #当num的余数为0时 continue #跳出当前循环,不执行以下语句 print(num) #在for循环中的运用 for num in [90,85,99,78,100]: if num<90: #当num的值小于90时 continue #结束当前循环,不执行下面的语句 txt='{}{}'.format(num,'优秀') print(txt)案例一、continue语句统计每次累计达标数将列表[41,5,41,78,51,68,34,64,49,21]中的值累加>=100时,标记出来,重新累计,以此类推。
i,j=0,0 for num in [41,5,41,78,51,68,34,64,49,21]: i +=num #对值进行累加 if i<100: #判断累加值是否小于100 print(i) continue #满足if条件执行跳出本次循环,不执行下面的语句 j +=1 #对j进行累加 print('第{}次,累加大于等于100,值为{}'.format(j,i)) i=0 #重置i的值,重新进行累加



