程序语言python循环_《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后,会再次判断是否满足循环条件。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值