三、用Python处理Excel数据 - 循环语句与分支语句



1、for…in循环语句基础

在这里插入图片描述

  • 我们遍历出来的每个元素、每个值,它会放在item这个变量里。
  • 我们从这个集合iterable里面遍历出来的每一个值,都会放在item元素里面,然后对它逐个逐个的进行遍历处理。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、for…in循环语句应用(批量创建工作簿)

在这里插入图片描述

3、for…in嵌套循环语句

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以此类推。。。。。。
在这里插入图片描述
在这里插入图片描述
因为print默认结束符是换行符,所以为了使内层循环遍历完后再换行,我们可以写print(),并使其跟外层for循环对齐:
在这里插入图片描述
在这里插入图片描述

4、for…in嵌套循环语句应用(制作九九乘法表,写入Excel表格中)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5、while循环语句

在这里插入图片描述
在这里插入图片描述

6、while循环语句应用(读取工作簿信息到新表)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7、while嵌套循环语句

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 通过调试寻找问题原因:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
问题就是我希望的是,内层循环每次开始的时候,y的值是从0开始,而不是向上面所示的那样,y的值也跟着一直累计着;也就是,凡是我从外层循环进入到内层循环的时候,它的y值都应该重置成0,从0开始。
所以,当内层循环结束之后,要跳到外层循环的时候,就可以将y值重置成0。

  • while嵌套循环跟for嵌套循环不一样,内层for循环结束后,进入外层for循环,然后再进入内层for循环的时候,内层for循环的那个控制变量会自动被重置为初值。

在这里插入图片描述
在这里插入图片描述

8、while嵌套循环语句应用(批量创建工作簿、工作表)

在这里插入图片描述
刚开始,你首先要知道把最基础的东西先建立起来,就是我们怎么样先把工作簿、工作表做好,然后再到它的外层去包裹循环语句,对我们初学者来说这样会更容易一些。
在这里插入图片描述

  • 然后我们先来通过循环创建所要求的这几个工作簿,每个工作簿里面先只有一个工作表:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 我们通过调试来找问题。
    在这里插入图片描述
    当调试运行到m的值为13的时候,此时已经不小于条件12了,就跳出了while内层循环。
    在这里插入图片描述
    这个时候你就会发现一个新的问题,由于m还是13,内层循环的条件表达式不成立,跳过内层循环去执行后面的保存,保存的时候就出问题了,F8单步就进入到:
    在这里插入图片描述
    问题就是,前面我们说过一个工作簿里面必须要有一个工作表,刚才创建了2016年工作簿的时候,但是由于m为13导致内层循环没有执行,没有运行创建工作表的内层循环循环体,没有创建工作表,这个工作簿没有工作表,你又在后面保存这个工作簿,就会出问题。
    所以要在外层循环里面添加一个重置m的语句,让m重新从1开始。

在这里插入图片描述
在这里插入图片描述
其实这种批量创建工作簿、工作表,用for循环指定年份和月份的范围很方便,也不需要考虑将内层循环的控制变量还原成初始化的样子,也不需要做控制变量的累加,for循环会自动累加控制变量。

9、if条件语句

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们前面说过,这个input接收到的数据默认是字符串类型,所以我们需要用int函数来对这个变量进行转换,由原来的字符串类型的数字转换成真正的整数类型。
在这里插入图片描述
通过调试也能看到input获得的是字符串类型,然后我们把它转换成整数类型:
在这里插入图片描述
在这里插入图片描述
另外,除了单独用一个语句进行转换以外,既可以直接将input获取的内容进行整数类型转换,也可以在if条件比较之前对这个变量score进行转换:
在这里插入图片描述

10、if…else条件语句

在这里插入图片描述
在这里插入图片描述

11、多条件if语句1(将筛选结果写入新工作簿)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里要注意,当if条件成立的时候,需要有一个累加值变量m用来方便的定位写入新簿新表中的行号,把m作为我们要写入的单元格的行号。

在这里插入图片描述
在这里插入图片描述

12、多条件if语句2(根据总分判断等级)

在这里插入图片描述
注意:下面的实例,是在原来的数据源上修改,而不是将数据写入一个新工作簿里面。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

13、break语句(跳出整个循环)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • break只是跳出这个语句所在的循环语句,并不是跳出所有的循环语句。

在这里插入图片描述
在这里插入图片描述

  • 看上图,我们想在连续几行print语句中间插入一条break语句,结果发现不能插入,没有break语句的智能提示,因为它就是专门针对虚幻语句来做的。

在这里插入图片描述

14、continue语句(跳出当次循环)

在这里插入图片描述
在这里插入图片描述

15、综合应用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 要求统计出每位员工第一次达标的业绩所对应的月份,每位员工从1月到12月的累计业绩突破1000的月份,那个月份他的业绩是多少,他的姓名是什么。
    在这里插入图片描述
    在这里插入图片描述
    如上图所示,就是到9月份刚好到1000了,到9月份是1097就开始达标了;就要逐个逐个的累加,当累加到了1000以后,我们就对应去选择对应的月份,以及他对应的是哪一个人。
    其实,最核心的技术是,我怎样知道是哪个月份大于等于1000呢?

在这里插入图片描述
此时我们先不忙着复制我们这个工作簿,因为我们读取到这个工作表Sheet1之后,我就对这个工作表里面的数据读取出来进行循环。
在这里插入图片描述
在这里插入图片描述
这样就可以把每一行的数据都遍历出来了。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
结果我们发现写入的内容不正确,怎么回事呢?因为我们得到>=1000的累计值后,程序仍然继续往后累计,累积的值仍然大于1000,所以就会循环着每次都写入统计结果表中,一直累计到12月。
我们只需要第一次达标的时候就可以了,后面的就不需要再循环了。
在这里插入图片描述
在这里插入图片描述
通过调试发现,我们找到第一个达标的9月份之后,内层循环仍然在继续循环、继续累计值,我们要在累积的值第一次大于等于1000的时候,在将对应的姓名、月份、业绩值写入单元格之后,加一个break,没必要让它再运行了,让内层循环跳出,继续执行下一行。
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值