《Python语言程序设计》 —2.5 循环语句
2.5 循环语句
通过循环,可以使某些语句重复执行多次。例如,我们要计算从1~n的和,可以使用一个变量sum=0保存求和结果,并设置一个变量i、让其遍历1~n这n个整数;对于i的每一个取值,执行sum+=i的运算;遍历结束后,sum中即保存了求和结果。
提示 “遍历”这个词在计算机程序设计中经常会用到,其表示对某一个数据中的数据元素按照某种顺序进行访问,使得每个数据元素访问且仅访问一次。例如,对于列表ls=[1, 'Python', True]中的3个元素,如果按照某种规则(如从前向后或从后向前)依次访问了1、'Python'、True这3个元素,且每个元素仅访问了一次,则可以说对列表ls完成了一次遍历。
循环语句的执行过程如图2-7所示。其中,语句序列1和语句序列3分别是循环语句前和循环语句后所执行的操作。循环条件判断和语句序列2构成了循环语句:只要满足循环条件,就会执行语句序列2;执行语句序列2后,会再次判断是否满足循环条件。
图2-7 循环语句执行过程
这里介绍Python的两种循环语句的使用方法:for循环和while循环。
2.5.1 for循环
与C/C++语言不同,Python语言中的for循环用于遍历可迭代对象中的每一个元素,并根据当前访问的元素做数据处理,其语法格式如下:
for 变量名 in 可迭代对象:
语句序列
变量依次取可迭代对象中每一个元素的值,在语句序列中可以根据当前变量保存的元素值进行相应的数据处理。例如,代码清单2-17可以将一个列表中各元素的值依次输出。
代码清单2-17 使用for循环输出列表中的元素
1 ls=['Python','C++','Java']
2 for k in ls:
3 print(k)
执行完毕后,输出下面的结果:
Python
C++
Java
再如,下面的代码可以将一个字典中各元素的键和值依次输出。
1 d={'Python':1,'C++':2,'Java':3}
2 for k in d: #注意for后要写上":"
3 print('%s:%d'%(k,d[k]))
执行完毕后,输出下面的结果:
Python:1
C++:2
Java:3
提示 使用for遍历字典中的元素时,每次获取的是元素的键,通过键可以再获取元素的值。
使用for循环时,如果需要遍历一个数列中的所有数字,则通常利用range函数生成一个可迭代对象。range函数的语法格式如下:
range([beg],end,[step])
其中,beg表示起始数值,end表示终止数值(生成对象中不包含end),step为步长(允许为负值)。如果step省略,则默认以1为步长;如果beg也省略,则默认从0开始。下面的代码展示了range函数的使用方法。
1 print(list(range(1,5,2))) #输出[1, 3]
2 print(list(range(5,-1,-2))) #输出[5, 3, 1]
3 print(list(range(1,5))) #输出[1, 2, 3, 4]
4 print(list(range(5))) #输出[0, 1, 2, 3, 4]
提示 range函数返回的是一个可迭代对象,通过list函数可将该对象转换为列表。
代码清单2-18展示了求1~n的和的计算方法。
代码清单2-18 使用for循环实现1~n的求和
1 n=eval(input('请输入一个大于0的整数:'))
2 sum=0
3 for i in range(1,n+1): #range函数将生成由1~n这n个整数组成的可迭代对象
4 sum+=i
5 print(sum) #输出求和结果
执行程序后,如果输入10,则输出55;如果输入100,则输出5050。
如果希望计算从1~n之间所有奇数的和,则可以编写代码清单2-19所示的代码。
代码清单2-19 使用for循环实现1~n之间所有奇数的和
1 n=eval(input('请输入一个大于0的整数:'))
2 sum=0
3 for i in range(1,n+1,2): #步长2,因此会生成奇数1、3、5……
4 sum+=i
5 print(sum) #输出求和结果
执行程序后,如果输入10,则输出25;如果输入100,则输出2500。
思考 如果希望计算从1~n之间所有是3的倍数的数字的和,应该如何编写程序呢?如果要计算n的阶乘呢?
- 点赞
- 收藏
- 关注作者
评论(0)