以此类推。。。。。。
因为print默认结束符是换行符,所以为了使内层循环遍历完后再换行,我们可以写print()
,并使其跟外层for循环对齐:
问题就是我希望的是,内层循环每次开始的时候,y的值是从0开始,而不是向上面所示的那样,y的值也跟着一直累计着;也就是,凡是我从外层循环进入到内层循环的时候,它的y值都应该重置成0,从0开始。
所以,当内层循环结束之后,要跳到外层循环的时候,就可以将y值重置成0。
刚开始,你首先要知道把最基础的东西先建立起来,就是我们怎么样先把工作簿、工作表做好,然后再到它的外层去包裹循环语句,对我们初学者来说这样会更容易一些。
其实这种批量创建工作簿、工作表,用for循环指定年份和月份的范围很方便,也不需要考虑将内层循环的控制变量还原成初始化的样子,也不需要做控制变量的累加,for循环会自动累加控制变量。
我们前面说过,这个input接收到的数据默认是字符串类型,所以我们需要用int函数来对这个变量进行转换,由原来的字符串类型的数字转换成真正的整数类型。
通过调试也能看到input获得的是字符串类型,然后我们把它转换成整数类型:
另外,除了单独用一个语句进行转换以外,既可以直接将input获取的内容进行整数类型转换,也可以在if条件比较之前对这个变量score进行转换:
这里要注意,当if条件成立的时候,需要有一个累加值变量m用来方便的定位写入新簿新表中的行号,把m作为我们要写入的单元格的行号。
注意:下面的实例,是在原来的数据源上修改,而不是将数据写入一个新工作簿里面。
此时我们先不忙着复制我们这个工作簿,因为我们读取到这个工作表Sheet1之后,我就对这个工作表里面的数据读取出来进行循环。
这样就可以把每一行的数据都遍历出来了。
结果我们发现写入的内容不正确,怎么回事呢?因为我们得到>=1000的累计值后,程序仍然继续往后累计,累积的值仍然大于1000,所以就会循环着每次都写入统计结果表中,一直累计到12月。
我们只需要第一次达标的时候就可以了,后面的就不需要再循环了。
通过调试发现,我们找到第一个达标的9月份之后,内层循环仍然在继续循环、继续累计值,我们要在累积的值第一次大于等于1000的时候,在将对应的姓名、月份、业绩值写入单元格之后,加一个break,没必要让它再运行了,让内层循环跳出,继续执行下一行。