(共33张PPT)
4.4 运用循环结构描述
问题求解的过程
必修一 《数据与计算》
为什么要使用循环结构
请用编程打印出1-10以内的所有偶数?
思 考
1-100以内的所有偶数?
请打开“方法1.py”和“方法2.py”文件,运行查看效果。
方法1:
方法2:
循环结构可大大减少语句重复,高效简洁。
甚至打印更多的数……
1-1000以内的所有偶数?
什么是循环
一年又一年的更替
一周又一周的轮转
一针又一针的跳动
跑步计数
重复地
做一件事情
什么是循环结构
一般情况下,需要多次重复执行的代码,都可以用循环的方式来完成;
循环结构可以简化编程结构,提高代码编写的效率。
在循环结构中,一些语句在某个条件成立时重复执行,直到条件不成立时,才结束重复执行。这个条件称为循环控制条件,被重复执行的语句块称为循环体。
开始
初始化部分
循环控制条件
循环体
循环体
以外的语句
结束
false
true
1
for循环的应用
2
while循环的应用
3
循环嵌套的应用
4
循环控制的应用
目录
CONTENTS
1
PART ONE
for循环的应用
一般格式
注意事项
序列生成方式
问题求解
for循环的一般格式
for 循环变量 in 序列:
语句或语句组
循环变量
循环语句
序列
for i in range(2, 101, 2) :
print( i )
方法1:
for循环的注意事项
for 循环变量 in 序列:
语句或语句组
通过遍历序列中的元素实现循环,序列中的元素会被依次赋值给变量,然后执行一次循环体,当序列中的元素全部遍历完时,程序会自动退出循环。
冒号“ : ”代表下一行是循环的第一行,循环体在书写时必须缩进。
for循环所包含的循环语句以缩进为标志。
缩进
是否缩进 循环体示例 代码示例结果
有缩进 for value in [1,2,3,4]: print(value) print('good')
无缩进 for value in [1,2,3,4]: print(value) print('good')
1
good
2
good
3
good
4
good
1
2
3
4
good
for循环的注意事项
for 循环变量 in 序列:
语句或语句组
通过遍历序列中的元素实现循环,序列中的元素会被依次赋值给变量,然后执行一次循环体,当序列中的元素全部遍历完时,程序会自动退出循环。
冒号“ : ”代表下一行是循环的第一行,循环体在书写时必须缩进。
for循环所包含的循环语句以缩进为标志。
缩进
序列是指有顺序地组织在一起的数据元素集合。
在python中,序列有多种生成方式,如列表、range( )函数、字典、元组等。
for循环中序列的生成方式
列 表
列表是写在方括号“[ ]”之间、用逗号隔开的元素列表。
如list1=[‘good’, ‘run’,‘2022’,
‘我们’]和a2= [1,2,3,4,5,6,7]
列表中的数据项不需要具有相同的类型。
与字符串的索引一样,列表索引从0开始。
(1)直接罗列
for value in [1,2,3,4]:
print(value)
(2)先定义、后使用
values=[1,2,3,4]
for value in values:
print(value)
运行结果
1
2
3
4
for循环中序列的生成方式
range( )函数
功能:返回一个等差整数序列
格式:range(起始值,终值,步长)
注意:生成的整数序列不包括终值,即表示的区间为[ 起始数,结束数 ),并且起始值和步长可以缺省,缺省时分别为0和1
步长可以缺省
起始值和步长缺省,缺省时分别为0和1
改变起始值、终值、步长来实现相应功能
for n in range(1,10,1):
n=1,2,3,4,5,6,7,8,9(9个数)
1
for n in range(1,10):
n=1,2,3,4,5,6,7,8,9(9个数)
2
for n in range(10):
n=0,1,2,3,4,5,6,7,8,9 (10个数)
3
for n in range(0,10,2):
n=0,2,4,6,8(5个数)
4
for n in range(10,0,-2):
n=10,8,6,4,2(5个数)
5
示例代码:
s=0 #定义一个变量,用于计算累加和
for n in range(1,101): #设置变量遍历区间为[1,101),公差为1,即1,2,3,…,99,100
s=s+n #有缩进
print(s) #无缩进
问题求解——举例
计算1+2+3+…+99+100(1~100的累加和)
循环次数 n在[1,101) s s=s+n
1 1 0 0+1
2 2 0+1 0+1+2
3 3 0+1+2 0+1+2+3
4 4 0+1+2+3 0+1+2+3+4
5 5 0+1+2+3+4 0+1+2+3+4+5
6 6 0+1+2+3+4+5 0+1+2+3+4+5+6
… … … …
98 8 0+1+2+3+4+5+6+…+97 0+1+2+3+4+5+6+…+98
99 9 0+1+2+3+4+5+6+…+98 0+1+2+3+4+5+6+…+99
100 10 0+1+2+3+4+5+6+…+99 0+1+2+3+4+5+6+…+100
退出 输出s=0+1+……+100=5050
问题求解——体验探究
体验探究1
请运用for循环语句求解10以内的所有奇数累乘的结果。
请打开资源包中“探究1.py”文件,补充代码使其输出正确结果。
示例代码:
s = 1
for i in range___________:
_____________
print(s)
s=s*i 或 s*=i
(1,10,2)
问题求解——能力提升
补充以下代码使其输出正确结果:
for n in range(_____________):
if ____________:
print(n)
请思考如何利用for循环语句输出100以内7的倍数。
可打开资源包中“拓展1.py”文件,补充代码使其输出正确结果。
参考代码见“拓展1(答案).py”文件。
2
PART TWO
while循环的应用
一般格式
注意事项
问题求解
while循环的一般格式
while (表达式) :
语句或语句组
while循环/条件循环,即当型循环,while翻译为“当……时”,只要条件满足,就不断循环;否则,跳出循环。
上条语句
表达式?
循环语句
下条语句
N
Y
循环语句
表达式
i=2
while i<101 :
print(i)
i = i+2
方法2:
while循环的注意事项
while (表达式) :
语句1
语句2
语句3
每次循环都是执行完循环体语句后回到表达式处重新开始判断,重新计算表达式的值。一旦为假就跳出循环,为真时继续执行循环体语句
循环体中必须有改变条件表达式值的语句,否则将变成死循环
缩进
:
一般是一个关系表达式或一个逻辑表达式,值为True或False
问题求解——举例
编写程序猜测价格,实现“猜对了”就跳出循环。
问题分析
让用户反复猜测价格
猜对价格要结束循环
需要用到循环结构
循环结构是基于条件的
用for语句还是while语句呢?
while语句
示例代码:
price=5600
guess=int(input("请输入你猜测的价格:"))
while guess!=price:
print("猜错了,加油哦!")
guess=int(input("请输入你猜测的价格:"))
print("猜对了,你真棒!")
问题求解——举例
编写程序猜测价格,实现“猜对了”就跳出循环。
如果猜不对,就会无限循环,成为死循环。该如何解决呢?
请打开资源包中“探究2.py”文件,补充代码使其输出正确结果。
示例代码:
price=5600
guess=int(input("请输入你猜测的价格:"))
times=1 #控制猜测次数
while ___________________________:
________________________
print("猜错了,加油哦!")
guess=int(input("请输入你猜测的价格:"))
print("猜对了,你真棒!")
问题求解——体验探究
体验探究2
请运用while循环语句实现控制次数的猜价游戏。(3次猜测机会)
times=times+1 或 times+=1
guess!=price and times<3
×
问题求解——体验探究
“控制次数猜价格”示例代码:
price=5600
guess=int(input("请输入你猜测的价格:"))
times=1
while guess != price and times < 3:
times = times+1
print("猜错了,加油哦!")
guess=int(input("请输入你猜测的价格:"))
print("猜对了,你真棒!")
“控制次数猜价格”示例代码(改进):
price = 5600
guess = int(input("请输入你猜测的价格:"))
times = 1
while guess != price and times < 3:
times = times+1
print("猜错了,加油哦!")
guess = int(input("请输入你猜测的价格:"))
if guess==price:
print("猜对了,你真棒!")
else:
print("很遗憾,猜错了,游戏结束!")
问题求解——能力提升
补充以下代码使其输出正确结果:
price = 5600
guess = int(input("请输入你猜测的价格:"))
times = 1
while guess != price and times < 3:
times = times+1
_________________
print("猜高了,再猜猜")
______
print("猜低了,再猜猜")
guess = int(input("请输入你猜测的价格:"))
if guess==price:
print("猜对了,你真棒!")
else:
print("很遗憾,猜错了,游戏结束!")
请思考如何利用while循环语句实现人机互动,让机器提示猜的价格偏高还是偏低。
可打开资源包中“拓展2.py”文件,补充代码使其输出正确结果。
参考代码见“拓展2(答案).py”文件。
3
PART THREE
循环嵌套的应用
何为嵌套
如何嵌套
问题求解
循环语句的嵌套
如果某一种循环语句中包含着自身或其他循环语句,就称为循环的“嵌套”。for循环或while循环之间可以相互嵌套。
循环嵌套的执行过程是要首先执行外层循环,外循环每执行一次,内循环则需执行一个完整的循环;外层循环执行完时,整个嵌套循环才算结束。
for循环通过遍历循环对象进行计数循环;
while循环通过判定条件进入循环。
循环嵌套的作用:解决复杂的问题。
循环体
内循环
外循环
问题求解——举例
利用循环嵌套实现九九乘法表。
乘法口诀表由九行九列组成,第i行的列数为其行号值,我们可以通过外层循环来打印每一行,然后通过内层循环来打印列,通过行号来控制列数。通过变量i来控制行数,通过变量j来控制列数。
分析问题
示例代码:
for i in range(1,10):
for j in range(1,i+1):
print(i, "*",j, "=",i*j, "\t",end=" ")
print( )
外循环
内循环
循环体
请打开资源包中“探究3.py”文件,补充代码使其输出正确结果。
示例代码:
for i in range (1,11):
___________________
print(" ", end=" ")
________
问题求解——体验探究
体验探究3
在控制台上打印一个10行10列的心形,如图所示。
for j in range(1, 11):
print( )
问题求解——能力提升
补充以下代码使其输出正确结果:
for i in range(1, 11):
for j in range_______:
print(" ", end=" ")
print()
请思考如何补充空白处代码使其正确输出,效果如图所示。
可打开资源包中“拓展3.py”文件,补充代码使其输出正确结果。
参考代码见“拓展3.1、3.2(答案).py”文件。
4
PART FOUR
循环控制的应用
break语句
continue语句
问题求解
break语句和continue语句
continue
语句
break
语句
在循环结构中,可以用break语句跳出当前循环体,从而跳出当前循环,执行当前循环外的下一条语句。
continue语句是当条件符合需要跳转的时候,跳过该次循环结束前的语句,回到循环开头的条件判断部分,重新开始执行循环。
num=0
for i in range(1,5):
print("进入第",i, "次循环i=",i)
if i==3:
break
num=num+1
print("num=",num)
退出本层循环
num=0
for i in range(1,5):
print("进入第",i, "次循环i=",i)
if i==3:
continue
num=num+1
print("num=",num)
退出本次循环
问题求解——体验探究
请计算1到5的累加和。
参考代码:
sum = 0
for i in range(0, 10):
sum = sum + i
if i == 5:
_______
print(sum)
体验探究4
请根据问题要求,补充空白处代码,认真体会break、continue语句的功能。
请计算10以内的奇数和。
参考代码:
sum = 0
for i in range(0, 10):
if i % 2 == 0:
_______
sum = sum + i
print(sum)
break
continue
问题求解——能力提升
请分别写出下面两个程序运行结果,分析程序功能。
参考代码见“拓展4.1.py、 拓展4.2.py”文件。
示例程序代码1:
i = 100
while i > 1:
if i % 13 == 0:
break
i=i-1
print(i)
示例程序代码2:
for i in range(100, 1, -1):
if i % 13 != 0:
continue
print(i)
知识总结
循环
嵌套
循环
控制
while
循环
for
循环
循环结构
又叫条件循环。只要条件满足,就不断循环;否则,退出循环。
break→跳出本层循环;
continue→跳过本次循环,回到开头。
某一种循环中包含另一种循环,就称为循环的嵌套。
通过遍历序列中的元素以实现循环,常搭配range函数使用。
谢谢大家