这是《Python入门经典以解决计算问题为导向的Python编程实践》中58-65的内容,主要将了while循环语句和for循环语句。
循环
- 一、while循环语句
- 语法:
- 工作原理:
- 案例解读
- 要点
- 二、for循环语句
- 语法
- 工作原理、
- 案例:寻找完全数
- 三、while语句和for语句的区别
- 案例:对数字分类
- 自测练习
在程序中,把重复称为“循环”。
在Python中,有两种不同风格的循环,分别是while语句和for语句
一、while循环语句
语法:
while 布尔表达式:循环体(被重复执行的代码块)
我们希望能够控制让指令重复执行的条件,在每次执行循环体时,就要先进行判断。
利用布尔表达式进行判定,满足条件就重复执行指令,不满足时就停止执行。
如果布尔表达式在第一次判断时就是假的,那么循环体的代码将永远不会被执行。
工作原理:
- ①进入while结构,开始第一次布尔表达式的判定
- ②布尔表达式为真,执行对应的循环体。
- ③第②步结束后,要进行下一次的布尔表达式判断
- ④布尔表达式为真继续②-④的步骤;为假时,循环结束,执行while语句后面的代码。
案例解读
下面的代码是输出0-9的数字
第一行给x 赋值
第二行判断x是否小于10。因为要输出0-9,当x=10的是否就不需要输出了,所以判断条件为x<10。
第3-4行是循环体,这里也可以发现循环体使用了相同缩进。满足x<10时,输出x,再将x的值加1。这一步很重要,假如没有x+=1,那么x永远等于初始值0,一直满足条件x<10,这个循环就变成了死循环了,一直输出0。
第5行时和第2行缩进一致的,它是while语句结束后的代码,当循环结束后,就会执行这一句。
要点
使用while语句时一定要包含以下元素:
- 变量有初始值,没有就要先赋值:如上面例子的第一句
- 循环体中要有对变量值进行修改的代码,不然会导致死循环。
二、for循环语句
迭代器是与所有集合类型相关联的对象。集合包含与对象相关联的多个元素,如果一个变量是集合类型,那么它可以保存多个元素。可以使用for循环访问集合中的各个元素。
语法
for 循环变量 in 对象:循环体
工作原理、
循环时会把对象中的元素的值赋给循环变量,每轮循环中循环变量都会被赋予不同的元素。
执行相应的循环体代码,一次循环后循环变量被赋予下一个元素的值,再次循环。
当对象中的元素都给完后,循环就会结束。
案例:寻找完全数
完全数是一个整数,其因数的和(不包含本身的因数)加起来就是数字本身,如
6=1+2+3
28=1+2+4+7+14
因数的和比数字本身大的数称为丰沛数。因数的和比数字本身小的数称为为不足数。完全数还有其他一些有趣的属性。但在这个例子中,我们只是编写程序来将整数分为三类:完全数、丰沛数或者不足数。
1、判定是否为完全数
思路:获取一个整数n——求出所有的因数——将sum初始值设为0,和所有因数相加——将n和sum进行判断
n=int(input("输入一个整数"))
sum=0
//求所有因数
//所有因数相加
if sum==n:print("这是完全数")
else:print("这不是完全数")
2、如何得到所有因数的和
对于数N来说,因数是能够整除N的数字,即N除以一个数,余数为0,这个数就是N的余数。
另外,我们知道一个数N的因数范围是1-N(这个数本身)。
所以求一个数的所有因数,可以用循环语句,从1-N,一个个去判断余数是否为0,为0时就是因数。
是因数,就和sum相加。
for i in range(1,n):if n%i==0:sum+=i
这里使用的range(1,10),会得到1-9的数字,不包含10。如果想要得到a到b的数字,就可以用range(a,b+1)。因为后一个数值是不包括的。例如range(2,6)得到的是2,3,4,5
简单了解一下,后续再讲。
3、整合代码
n=int(input("输入一个整数"))
sum=0
for i in range(1,n):if n%i==0:sum+=i
if sum==n:print("这是完全数")
else:print("这不是完全数")
三、while语句和for语句的区别
while语句和for语句是可以相互转换的,他们之间也是有区别的。
#i不用赋初值,会被赋予被循环对象中的第一个元素
for i in range(1,n): if n%i==0:sum+=i
#for循环不需要多一句改变循环变量的语句,会在下一次循环中自动赋予被循环对象的下一个语句。
可以转换成while语句,如下:
i=1 #while语句需要给变量赋初值
while i<10:if n%i==0:sum+=ii+=1 #while语句要改变循环变量
案例:对数字分类
给定范围,能检查其中的每个数字,判定每个数字是完全数、不足数和丰沛数。那么就可以寻找到更多的完全数
1、输入范围内的最大数值
2、因数求和
3、数字分类
这里面用到了两个for循环语句,在循环语句中用循环语句,称为循环的嵌套。在使用时要注意同层代码要用相同缩进。