《Python语言程序设计》 —2.5 循环语句

举报
华章计算机 发表于 2019/11/18 20:11:57 2019/11/18
【摘要】 本节书摘来自华章计算机《Python语言程序设计》一书中第2章,第2.5.1节,作者是王恺 王志 李涛 朱洪文。

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后,会再次判断是否满足循环条件。

 image.png

图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的阶乘呢?


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。