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

3.1 for循环语句

Python中的for循环语句可以遍历任何序列项目,比如字符串、列表、元组、集合等。for循环语句的语法结构如图3-1所示。

图3-1 for循环语句的语法结构

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

● item是元素,相当于变量名称,用户可自行命名,用于接收从iterable中循环读取的元素。

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

● iterable是迭代器,类似于一个容器,其表达形式由用户自行定义,从该迭代器中读取出来的数据将传给item变量。

● “:”是关键字,可以理解为到此为止,后面不能再加任何代码,也是换行的标志。

● do something是for循环的处理语句,具体如何处理、代码如何编写等要根据特定的需求而定。对处理语句必须做缩进处理,它不能与上面的for关键字对齐。在PyCharm中不用手工缩进,在“:”(冒号)后按Enter键,会自动做缩进处理。

3.1.1 循环字符串

for循环语句可以循环一切可迭代的对象,比如列表、元组、集合、字典等,在后续章节中将陆续讲解。本节介绍字符串的循环,比如将字符串'Python'中的每个字符读取出来并打印到屏幕上。代码如下所示,代码在“Chapter-3-1.py”文件中,最后完成的效果如图3-2所示。

第1行代码 for str in'Python' ,表示将'Python'中的每个字符逐个赋值给str变量。

第2行代码 print(str) ,表示将str变量的值输出到屏幕上。因为字符串'Python'中有6个字符,所以此行代码会循环执行6次。

图3-2 循环读取字符串中的字符并输出

3.1.2 循环序列数

循环序列数是常见的一种循环方式,下面介绍循环指定范围内的序列数。要指定序列数的范围,可以使用Python中的range函数。

函数语法:

参数说明:

● start——表示起始值,默认从0开始。例如,range(5)等价于range(0,5)。

● stop——表示终止值,但不包括终止值。例如,range(0,5)的返回值是0、1、2、3、4,不包括5。

● step——步长,默认为1。例如,range(0,5)等价于range(0,5,1),返回值是0、1、2、3、4。如果是range(0,5,2),则返回值是0、2、4。

例如,循环读取111~114中的每个数字,最后完成的效果如图3-3所示。案例代码如下所示,代码在“Chapter-3-2.py”文件中。

第1行代码 for num in range(111,115,1) ,指定要循环读取的数字范围是111~115,其中不包括数字115,步长为1,在这里可以忽略不写。

第2行代码 print(num) ,使用print函数将num变量获取的值输出到屏幕上。

图3-3 循环打印序列数

3.1.3 for循环语句应用案例:批量新建工作簿

学习本书的目的是使用Python来操作Excel文件,但到目前为止,还没有批量处理过任何Excel文件,原因是在这之前还没有学习循环语句。接下来,我们就使用刚刚学过的for循环语句来小试牛刀。

批量新建1~12月的工作簿,完成后的效果如图3-4所示。

图3-4 批量新建1~12月的工作簿

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

第1行代码 import xlwt ,导入需要用到的xlwt库。

第2行代码 for month_num in range(1,13) ,表示循环读取数字1~12并赋值给month_num变量,因为不包括13,所以刚好是12个数字。

第3行代码 month_name='{}月份.xls'.format(month_num) ,将循环得到的数字格式化为工作簿名称并赋值给month_name变量,便于后面保存工作簿时使用。

第4行代码 nwb=xlwt.Workbook('utf-8') ,新建工作簿并赋值给nwb变量。

第5行代码 nwb.add_sheet(month_name) ,新建工作表。因为使用第4行代码新建的工作簿中没有工作表(如果新建的工作簿中一个工作表也没有,那么在保存工作簿时就会提示错误),所以第5行代码的作用就是保证工作簿能被正常保存,工作表名称借用了工作簿名称,当然也可以命名为其他名称。

第6行代码 nwb.save(month_name) ,保存工作簿,所保存的文件名使用第3行代码中month_name变量的值。

注意:第3~6行代码是for循环体中的语句,并且做了缩进设置,这4行代码要重复执行12次,最后生成12个工作簿。

3.1.4 for嵌套循环语句

在某些时候,for循环语句需要进行多层嵌套。下面以打印乘法表为例,来讲解for循环语句的嵌套用法,最后完成的效果如图3-5所示。

图3-5 for嵌套循环的效果

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

第1行代码 for x in range(1,10): ,表示循环读取数字1~9并赋值给x变量,这是外层for循环。

第2行代码 for y in range(1,10): ,表示循环读取数字1~9并赋值给y变量,这是内层for循环。注意,此循环是嵌套在外层循环中的,也就是说,外层for循环执行1次,内层for循环要执行9次。外层for循环总共需要执行9次,内层for循环要执行81次。属于内层for循环的第3行和第4行代码要执行81次。

第3行代码 txt='{0}×{1}={2}'.format(y,x,x*y) ,使用format函数格式化两个乘数x和y,以及乘积结果x*y,然后赋值给txt变量。

第4行代码 print(txt,end='\t') ,使用print函数将txt变量的值输出到屏幕上,其中 end='\t' 表示以制表符结束,如果不特别指定,则默认以回车符结束。

第5行代码 print() ,此行代码是与内层for循环语句同级的,属于外层for循环下的语句,它会执行9次,而不是执行81次。这行代码在每次内层for循环完成后,都加一个回车符以起到换行的作用。前面说过,print函数默认以回车符结束,所以没在print函数中做任何改动。

3.1.5 for嵌套循环语句应用案例:制作九九乘法表

本节对3.1.4节中的乘法表进一步做优化,制作成标准的九九乘法表,并且写入Excel文件,效果如图3-6所示。

图3-6 九九乘法表效果

制作九九乘法表对应的Python代码如下所示,代码在“Chapter-3-5.py”文件中。

第1行代码 import xlwt ,导入需要用到的xlwt库。

第2行和第3行代码 nwb=xlwt.Workbook('utf-8') nws=nwb.add_sheet('乘法表') ,分别用来新建工作簿和在工作簿中新建工作表。

第4行代码 for x in range(1,10): ,这是外层for循环,循环读取数字1~9,然后将循环读取出来的数字赋值给x变量。

第5行代码 for y in range(1,x+1): ,这是内层for循环,其中x+1表示终止循环的数字。如果外层for循环执行1次,则内层for循环执行range(1,1+1)次,即只能循环1次;如果外层for循环执行2次,则内层for循环执行range(1,2+1)次,即只能循环2次,依此类推。

第6行代码 txt='{0}×{1}={2}'.format(y,x,x*y) ,格式化循环读取出来的数字,组成乘法公式并赋值给txt变量。

第7行代码 nws.write(x,y,txt) ,将第6行代码中txt变量的值写入工作表中对应的单元格。

第8行代码 nwb.save('Chapter-3-5-1.xlsx') ,完成乘法表的写入后进行保存。注意,此行代码与外层for循环语句是同级的,因此该行代码只执行1次。如果将其放在外层for循环体中,则会执行9次;如果将其放在内层for循环体中,那么就会执行45次。虽然不影响结果,但是更消耗资源。 iAccZY4ncXmP0+JysN9VvdgS5ECxiC6ah6c/my8Axhr0LdgGyJPECWWtVF8Cckou

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