循环语句—Python编程从入门到精通(5)

发表于:2018-12-24 11:04

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:叶维忠    来源:51Testing软件测试网原创

#
Python
分享:
  第6章、循环语句
  在本书上一章的内容中,我们学习了实现条件判断功能的条件语句,让程序的执行顺序发生了变化。为了满足循环和跳转等功能,本章将详细讲解Python语言中循环语句的知识,主要包括for循环语句、while循环和循环控制语句。在讲解过程中通过具体实例的实现过程讲解了各个知识点的具体用法,为读者步入本书后面知识的学习打下基础。
  6.1、使用for循环语句
  在Python语言中,循环语句是一种十分重要的程序结构。其特点是,在给定条件成立时,反复执行某程序段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。循环结构还如大家在操场跑步,例如每天跑8000m,你就得在操场400m跑道上跑20圈,这20圈的路线是相同的、重复的,这20圈的跑步动作就是一个循环。在Python程序中主要有3种循环语句,分别是for循环语句、while循环语句和循环控制语句。下面将首先讲解for循环语句的知识。
  6.1.1、基本的for循环语句
  在Python语言中,for语句是Python语言中构造循环结构程序的语句之一。在Python程序中,绝大多数的循环结构都是用for语句来完成的。和Java、C语言等其他语言相比,Python语言中的for语句有很大的不同,其他高级语言中的for语句需要用循环控制变量来控制循环。而Python语言中的for循环语句通过循环遍历某一序列对象(例如本书后面将要讲解的元组、列表、字典等)来构建循环,循环结束的条件就是对象遍历完成。
  在Python程序中,使用for循环语句的基本语法格式如下所示。
for iterating_var in sequence:
statements
  在上述格式中,各个参数的具体说明如下所示。
  "iterating_var:表示循环变量。
  "sequence:表示遍历对象,通常是元组、列表和字典等。
  "statements:表示执行语句。
  上述for循环语句的执行流程如图6-1所示。
  上述格式的含义是遍历for语句中的遍历对象,每经过一次循环,循环变量就会得到遍历对象中的一个值,可以在循环体中处理它。在一般情况下,当遍历对象中的值全部用完时,就会自动退出循环。
  下面的实例演示了使用 for 循环语句的基本过程。
  实例6-1 使用基本的for循环语句
  源码路径 daima\6\6-1
  实例文件for.py的具体实现代码如下所示。
for letter in 'Python':   #第一个实例,定义一个字符
print ('当前字母 :', letter)
#循环输出字符串"Python"中的各个字母
fruits = ['banana', 'apple', 'mango']
#定义一个列表
for fruit in fruits:
print ('当前单词 :', fruit)
#循环输出列表"fruits"中的3个值
print ("Good bye!")
  执行效果如图6-2所示。
  
  6.1.2、通过序列索引迭代
  在Python语言中,还可以通过序列索引迭代的方式实现循环功能。在具体实现时,可以借助于内置函数range()实现。因为在Python语言的for语句中,对象集合可以是列表、字典以及元组等,所以可以通过函数range()产生一个整数列表,这样可以完成计数循环功能。
  在Python语言中,函数range()的语法格式如下所示。
range( [start,] stop[, step])
  各个参数的具体含义如下所示。
  "start:可选参数,起始数,默认值为0。
  "stop:终止数,如果range只有一个参数x,那么range生产一个从0至x?l的整数列表。
  "step:可选参数,表示步长,即每次循环序列增长值。
  注意:产生的整数序列的最大值为stop?1。
  下面的实例通过序列索引迭代的方式循环输出了列表中的元素。
  实例6-2 循环输出列表中的元素
  源码路径 daima\6\6-2
  实例文件diedai.py的具体实现代码如下所示。
fruits = ['banana', 'apple', 'mango']
#定义一个数组
for index in range(len(fruits)):
#使用函数range()遍历数组
print ('当前水果 :', fruits[index])
#输出遍历数组后的结果
print ("Good bye!")
  执行后的效果如图6-3所示。
  
  6.1.3、使用for… else循环语句
  在Python程序中,for…else表示的意思是:for中的语句和普通的语句没有区别,else中的语句会在循环正常执行完(即for不是通过break跳出而中断的)的情况下执行。使用for…else循环语句的语法格式如下所示。
for iterating_var in sequence:
statements1
else:
statements2
  在上述格式中,各个参数的具体说明如下所示。
  "iterating_var:表示循环变量。
  "sequence:表示遍历对象,通常是元组、列表和字典等。
  "statements1:表示for语句中的循环体,它的执行次数就是遍历对象中值的数量。
  "statements2:else语句中的statements2,只有在循环正常退出(遍历完所有遍历对象中的值)时才执行。
  下面的实例演示了使用for… else循环语句的执行过程。
  实例6-3 判断是否是质数
  源码路径 daima\6\6-3
  实例文件else.py的具体实现代码如下所示。
for num in range(10,20):
#循环迭代10 到 20 之间的数字
for i in range(2,num): #根据因子迭代
if num%i == 0:     #确定第一个因子
j=num/I        #计算第二个因子
print ('%d 等于 %d * %d' % (num,i,j))
break          # 跳出当前循环
else:
# 如果上面的条件不成立,则执行循环中的else部分
print (num, '是一个质数') #输出这是一个质数
  执行后的效果如图6-4所示。
  
  6.1.4、嵌套for循环语句
  当在Python程序中使用for循环语句时,可以是嵌套的。也就是说,可以在一个for语句中使用另外一个for语句。例如在前面的实例6-3中使用了嵌套循环,即在for循环中又使用了一个for循环。使用for循环语句的形式如下所示。
for iterating_var in sequence:
for iterating_var in sequence:
statements
statements
  上述各参数的含义与前面非嵌套格式的参数一致。
  下面实例使用嵌套for循环语句获取两个整数之间的所有素数。
  实例6-4 获取两个整数之间的所有素数
  源码路径 daima\6\6-4
  实例文件qiantao.py的具体实现代码如下所示。
#提示输入一个整数
x = (int(input("请输入一个整数值作为开始:")),int(input
("请输入一个整数值作为结尾:")))
x1 = min(x)          #获取输入的第1个整数
x2 = max(x)          #获取输入的第2个整数
for n in range(x1,x2+1):
#使用外循环语句生成要判断素数的序列
for i in range(2,n-1):
#使用内循环生成测试的因子
if n % i == 0:
#如果生成测试的因子能够整除,则不是素数
break
else:          #上述条件不成立,则说明是素数
print("你输入的",n,"是素数。")
  在上述代码中,首先使用输入函数获取用户指定的序列开始和结束,然后使用for语句构建了两层嵌套的循环语句用来获取素数并输出结果。使用外循环语句生成要判断素数的序列,使用内层循环生成测试的因子。并且使用else子句的缩进来表示它属于内嵌的for循环语句,如果多缩进一个单位,则表示属于其中的if语句;如果少缩进一个单位,则表示属于外层的for循环语句。因此,Python中的缩进是整个程序的重要构成部分。执行后将提示用户输入两个整数作为范围,例如分别输入"100"和"105"后的执行效果如图6-5所示。
  注意:
  C/C++/Java/C#程序员需要注意如下两点。
  "Python语言的for循环完全不同于C/C++的for循环。C#程序员会注意到,在Python中for循环类似于foreach循环。Java程序员会注意到,同样类似于在Java 1.5中的to for (int i : IntArray)。
  "在C/C++中,如果你想写for (int i = 0; i<5; i++),那么在Python中你只要写 for i in range(0,5)。正如你可以看到的,在Python中for循环更简单、更富有表现力且不易出错。

相关阅读:
版权声明:51Testing软件测试网获人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号