Python之循环语句

这是《Python入门经典以解决计算问题为导向的Python编程实践》中58-65的内容,主要将了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+=i
	i+=1   #while语句要改变循环变量

案例:对数字分类

给定范围,能检查其中的每个数字,判定每个数字是完全数、不足数和丰沛数。那么就可以寻找到更多的完全数

1、输入范围内的最大数值
2、因数求和
3、数字分类
在这里插入图片描述
这里面用到了两个for循环语句,在循环语句中用循环语句,称为循环的嵌套。在使用时要注意同层代码要用相同缩进。

自测练习

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值