内容正文:
必修一《数据与计算》
第三章 算法的程序实现
3.2.4 循环结构的程序实现
学习目标:
循环结构
for语句
while语句
1
2
跟同学承认错误,说一万遍“同学,对不起!”
还有9997遍………
使用循环,一个语句块搞定:
3.2.4 循环结构的程序实现
1 i = 0
2 while i <=10000 :
3 print(“同学,对不起!”)
4 i += 1
1 for i in range(10000):
2 print(“同学,对不起!”)
使用while循环语句:
使用for循环语句:
1 print “同学,对不起!”
2 print “同学,对不起!”
3 print “同学,对不起!”
必修一:数据与计算
我要判断100个人胖不胖该怎么办?
3.2.4 循环结构的程序实现
条件?
循环体
否
是
算法的控制结构-循环结构
循环结构是一种重复某一部分操作的结构。即在条件控制下,某些操作步骤需要重复执行(循环),在不满足重复处理条件时,循环结束。
必修一:数据与计算
开始
结束
输入身高、体重
计算BMI=体重/身高2
输出“哇,你有点胖了哟”
BMI>24
输出“羡慕,你一点也不胖”
Y
N
N
n=0
Y
n=n+1
n<=100
Python程序如下:
3.2.4 循环结构的程序实现
1 while n<100:
2 w=float(input(“请输入体重(kg):”))
3 h=float(input(“请输入身高(m):”))
4 bmi=w/(h**2)
5 if bmi>24:
6 print (”哇,你有点胖了哟!”)
7 else:
8 print (”羡慕,你一点也不胖”)
9 n=n+1
必修一:数据与计算
循环结构的类型
直到型:直到型循环结构是先执行循环体,直到条件成立时退出循环结构。先判断,再执行,循环次数确定的情况,通常选用for循环。
for循环
while循环
3.2.4 循环结构的程序实现
当型:当型循环结构是先判断条件,成立时执行循环体,否则退出循环结构。循环次数不确定的情况,先判断是否满足循环条件,满足则循环否则不循环,通常选用while循环。
无论哪一种循环结构,都有4个必不可少的部分:初始部分、循环条件、循环体、更新循环变量。
必修一:数据与计算
在python中,for语句的格式为:
for <变量> in <序列>:
<循环体>
[else
<语句块>]
3.2.4 循环结构的程序实现
for 语句
缩进
关
键
字
冒号
缩进
循环体
循环条件满足?
是
否
直到型循环
直到型循环结构是先在执行了一次循环体之后,再对控制条件进行判断,当条件不满足时执行循环体,满足时则停止。
循环次数确定的情况,先进行循环,然后再判断是否满足循环条件,满足则循环,否则退出循环。一般来说,直到型循环通常选用for语句。
无论哪一种循环结构,都有4个必不可少的部分:初始部分、循环条件、循环体、更新循环变量 。
必修一:数据与计算
例如要依次显示某名学生的兴趣爱好,(篮球, 羽毛球,看书,旅游,音乐 ),可以通过下列语句来实现:
该语句执行后,输出的结果是:
“篮球”,“羽毛球”,“看书”,“旅游”,“音乐”
3.2.4 循环结构的程序实现
1 hobby= ["篮球", ”羽毛球", ”看书", "旅游”, "音乐"]
2 for x in hobby:
3 print (x)
必修一:数据与计算
为了更深入了解for循环,试着思考下面这个问题,如何打印出这样的结果?
1+1=2
2+1=3
3+1=4
………
10 + 1 = 11
python内置函数-------range()
分析:
1、一直进行如此计算: s=s+1;
2、如何获取数字序列[1,2,3,4,5,6,7,8,9,10];
3、编写代码。
3.2.4 循环结构的程序实现
1 for num in range(1,11):
2 print(str(num)+“+1”+“=”,num+1)
必修一:数据与计算
range()函数语法结构:
range (start , stop ,step)
range()是Python的内置函数,range()函数用于生成一个整数序列,表示循环的意思。
range()函数
初值
(包含)
3.2.4 循环结构的程序实现
参数介绍:
start:表示从返回序列的起始编号,默认情况下从0开始。
终值
(不包含)
步长
(默认为1,可以是正数,
可以是负数,但不能为0)
stop:终止编号,表示生成最多但不包括此数字的数字。
step:指的是序列中每个数字之间的差异,默认值为1,可以是正数可以是负数但不能为0。
必修一:数据与计算
Range
函数
语法
示例
生成一个整数序列
range(参数1,参数2,参数3)
默认从0开始,含前不含后
第1个参数为起始数字
第2个参数为结束数字
第3个参数为步长(前后两个数字的差)
range(2,11,3)
range(2,5)
range(5)
结果:2,5,8
结果:2,3,4
结果:0,1,2,3,4
作用
3.2.4 循环结构的程序实现
必修一:数据与计算
第一种:range(start,stop,step):创建一个在[start,stop)之间,步长为step的整数序列;
range()的三种创建方式:
3.2.4 循环结构的程序实现
1 a=range( 1,10,2 )
2 print ( list ( a ) )
运行结果为:
[1,3,5,7,9]
例如:
1 a=range( 1,10 )
2 print ( list ( a ) )
运行结果为:
[1,2,3,4,5,6,7,8,9]
例如:
1 a= range( 10 )
2 print ( list ( a ) )
例如:
运行结果为:
[0,1,2,3,4,5,6,7,8,9]
第二种:range(start,stop) (给了两个参数,即小括号中给了两个数)
第三种:range(stop) 只有一个参数(小括号中只给了一个数),即只有终值,指的是默认从0开始,步长为1,不包括10。
必修一:数据与计算
【例1】打印一个从1到20且相隔3的数字序列。
输出结果为:[ 1, 4, 7, 10, 13, 16, 19 ]
1 x = range(1, 20, 3)
使用for循环,python代码如下:
开始
结束
n<=20?
n=n+3
n=1
输出n
Y
N
2 for n in x :
3 print(list(n))
3.2.4 循环结构的程序实现
必修一:数据与计算
用range()函数创建递减序列:
可以通过使用负步长来创建递减序列。
range(10,0,-1)
输出结果为:10,9,8,7,6,5,4,3,2,1
用range()函数生成字符序列:
可以通过使用负步长来创建递减序列。
range(ord(‘A’ ),ord( 'Z' )+1)
输出结果为:ABCDEFGHIJKLMNOPQRSTUVWXYZ
3.2.4 循环结构的程序实现
必修一:数据与计算
小学的时候,老师教我们拿1到100的和 是观察规律;1+100= 101,2+99=101,……50+51=101,于是50*101 = 5050;后来上了初中才知道,这个是梯形面积公式=(上底+下底)x高÷2 ,上了高中才知道,这个等差数列的前n项求和公式。
若等差数列{an}的通项公式为:an=a1+(n-1)d、an=am+(n-m)d。等差数列前n项和公式:Sn=n*a1+n(n-1)d/2或Sn=n(a1+an)/2。 :
抽象与建模
【问题】设计一算法,求100以内自然数之和。
3.2.4 循环结构的程序实现
必修一:数据与计算
不过,计算机来算的话,通常是简单粗暴地算,直接从1累加到100,也称累加(连加)。其实步骤就是:
第一步:从1开始将自然数1、2、 3、…、100所有数逐个相加;
第二步:输出累加到100的结果。
3.2.4 循环结构的程序实现
i = i + 1
S=S + i
实际在重复计算这个步骤
S0=0,i=1
第1步: i=1, S1=S0+ 1
第2步: i=2,S2=S1 + 2
第3步: i=3,S3=S2 + 3
………
第100步:i=100,S100=S99 + 100
结果:输出S
思考:
上边的式子有怎样的规律呢?
必修一:数据与计算
求和100以内所有自然数之和(三种结构)
设计算法
i=1
s=0
i<=100
输出s
s=s+i
i=i+1
F
T
结束
开始
S=0
i=1
s=s+i
i=i+1
i>100
输出s
F
T
结束
开始
s=0
i=1
i<=100
i=i+1
输出s
F
T
s=s+i
结束
开始
3.2.4 循环结构的程序实现
必修一:数据与计算
编写程序
使用for语句实现的程序代码:
1 i= 1 #给i赋初值
3.2.4 循环结构的程序实现
2 s= 0 #给i赋初值
3 for i in range( 1,101 ): #生成1~100自然数
4 s =s+i #求和
5 i=i+1 #将i逐渐递增
6 print( “100以内自然数之和为”,s ) #输出s
必修一:数据与计算
观察一下,这段程序代码能否优化?
1 s= 0
2 for i in range(1,101):
3 s =s+i
4 print(“100以内自然数之和为”,s )
3.2.4 循环结构的程序实现
优化程序代码:
必修一:数据与计算
3、编程求1~100的所有偶数的和。试采用两种不同的方式实现。
思考与练习(page95):
方法一:
方法二:
1 s=0 #给s赋初值
2 for x in range(1,101): #生成1~100整数
3 if x%2==0: #判定x是偶数
4 s=s+x #求和
5 print(“1~100的所有偶数的和是:”,s)
1 s=0 #给s赋初值
2 for x in range(2,101,2): #生成1~100偶数
3 s=s+x #求和
4 print(“1~100的所有偶数的和是:”,s)
必修一:数据与计算
编程求1~100所有奇数和。试采用两种不同的方式实现,并考虑程序的效率。
方式一:
方式二:
拓展练习
1 s=0
2 for x in range(1,100,2):
3 if x%2==1:
4 s=s+x
5 print(“1~100的所有奇数的和是:”,s)
1 s=0
2 for x in range(1,101,2):
3 s=s+x
4 print(“1~100的所奇偶数的和是:”,s)
必修一:数据与计算
【例】打印九九乘法表。
1 for i in range(1, 10):
2 for j in range(1, 10):
3 print(f'{i} x {j} = {i*j}', end='\t')
4 print()
3.2.4 循环结构的程序实现
循环的嵌套
for <变量1> in <序列>:
for <变量2> in <序列>:
<循环体>
………………
外循环
内循环
循环次数:外循环次数 × 内循环次数
必修一:数据与计算
大约一千五百年前,我国古代数学名著《孙子算经》中记载了一道数学趣题,这就是著名的“鸡兔同笼”问题。书中是这样叙述的:“今有鸡兔同笼,上有三十五头,下有九十四足,问鸡兔各几何?”请用Python语言编程实现计算鸡兔数量。
《孙子算经》中采用的解题方法。
1、抬腿,即鸡“金鸡独立”,兔两个后腿着地,前腿抬起,腿的数量就为原来数量的一半。94÷2=47只脚。
2、现在鸡有一只脚,兔有两只脚。笼子里只要有一只兔子,脚数就比头数多1。
3、那么脚数与头数的差,47-35=12,就是兔子的只数。
4、最后用头数减去兔的只数,35-12=23,就得出鸡的只数。
1 head =35
2 foot =94
3 for chicken in range(0, head+1):
4 rabbit= head- chicken
5 if chicken*2+rabbit*4== foot:
6 print(“鸡有” + str(chicken) + “只,”,“兔子有" + str(rabbit) + "只。")
3.2.4 循环结构的程序实现
必修一:数据与计算
简单算法的实现——解析算法
设鸡有x只,兔子有(35−x)只,然后根据鸡有2条腿,兔子有4条腿的特性,设立方程:
2x+4(35−x)=96。
将方程2x+4(35−x)=96展开和整理,得到:
2x+140−4x=96。
将方程2x+140−4x=96化简,得到:
2x=44。
求解方程2x=44,得到x=22,代表鸡有22只。
根据x的值,求解35−x=35−22,得到13,代表兔子有13只。综上,本题答案为:鸡有22只,兔子有13只。
必修一:数据与计算
所谓解析法(analysis algorithm)是指根据问题的前提条件与所求结果之间的关系,找出求解问题的数学表达式,并通过表达式的计算来实现问题的求解
已知条件
求解目标
x + y = 35
2x + 4y = 94
求鸡的个数
求兔的个数
用解析算法解决问题
《孙子算经》的作者提出了两种解法:
术曰:上置三十五头,下置九十四足。半其足,得四十七,以少减多,再命之,上三除下四,上五除下七,下有一除上三,下有二除上五,即得。
又术曰:上置头,下置足,半其足,以头除足,以足除头,即得。
Python代码:
head=35
foot=94
for x in range(1,head+1):
for x in range(1, head+1):
if x+y==head and 2*x+4*y==foot:
print (“鸡的数量是:”x)
print (“兔的数量是:” y)
简单算法的实现——解析算法
22
13
必修一:数据与计算
26、(12分)大约1500年前,《孙子算经》中就记载了鸡兔同笼问题:今有雉兔同笼,上有三十五头,下有九十四足,问雉兔个几何?意思就是:有若干只鸡和兔在同一个笼子里,从上面数,有三十五个头;从下面数,有九十四只脚。求笼中鸡和兔各有几只?小邓利用循环结构进行问题求解,其中设鸡的数量为x、兔的数量为y,同时满足如下两个条件:x+y=35和2x+4y=94,则问题有解。程序如下:
(1)该程序采用的算法是______________。
(2)程序运行结束后,第5行if语句一共执行了___________次。
小朱同学看到小邓的程序后,修改了部分代码,修改后的代码如下:
(3)小朱修改的程序运行结束后,第5行if语句一共执行了________次,小朱的代码__________(选填“降低了”、“没有提高”或“提高了”)程序的执行效率。
2022年春季学期学业水平考试第26题
解析算法
1225
35
提高了
设鸡有x只,兔子有(35−x)只,然后根据鸡有2条腿,兔子有4条腿的特性,设立方程:
2x+4(35−x)=96。
将方程2x+4(35−x)=96展开和整理,得到:
2x+140−4x=96。
将方程2x+140−4x=96化简,得到:
2x=44。
求解方程2x=44,得到x=22,代表鸡有22只。
根据x的值,求解35−x=35−22,得到13,代表兔子有13只。
综上,本题答案为:鸡有22只,兔子有13只。
必修一:数据与计算
(12分)大约1500年前,《孙子算经》中就记载了鸡兔同笼问题:今有雉兔同笼,上有三十五头,下有九十四足,问雉兔个几何?意思就是:有若干只鸡和兔在同一个笼子里,从上面数,有三十五个头;从下面数,有九十四只脚。求笼中鸡和兔各有几只?小邓利用循环结构进行问题求解,其中设鸡的数量为x、兔的数量为y,同时满足如下两个条件:x+y=35和2x+4y=94,则问题有解。程序如下:
(1)该程序采用的算法是_______________。
(2)程序运行结束后,第5行if语句一共执行了_____________次。
解析算法
1225
练习(2022年春季学期学业水平考试第26题)
1 head=35 #头的数量
2 foot=94 # 脚的数量
3 for x in range(1,head+1) :
4 for y in range(1,head+1):
5 if x+y==head and 2*x+4*y==foot :
6 print(“鸡的数量是:”,x,“兔的数量是:”,y)
必修一:数据与计算
(12分)大约1500年前,《孙子算经》中就记载了鸡兔同笼问题:今有雉兔同笼,上有三十五头,下有九十四足,问雉兔个几何?意思就是:有若干只鸡和兔在同一个笼子里,从上面数,有三十五个头;从下面数,有九十四只脚。求笼中鸡和兔各有几只?小邓利用循环结构进行问题求解,其中设鸡的数量为x、兔的数量为y,同时满足如下两个条件:x+y=35和2x+4y=94,则问题有解。程序如下:
小朱同学看到小邓的程序后,修改了部分代码,修改后的代码如下:
(3)小朱修改的程序运行结束后,第5行if语句一共执行了__________次,小朱的代码____________(选填“降低了”、“没有提高”或“提高了”)程序的执行效率。
35
提高了
练习(2022年春季学期学业水平考试第26题)
1 head=35 #头的数量
2 foot=94 # 脚的数量
3 for x in range(1,head+1) :
4 y=head-x
5 if 2*x+4*y==foot :
6 print(“鸡的数量是:”,x,“兔的数量是:”,y)
必修一:数据与计算
3.2.4 循环结构的程序实现
流
程
图
开始
i=1
s=1
i=i+1
s=s*i
i≤100
输出s
结束
n
y
【问题】设计一算法,求100的阶乘。
100!
阶乘 是基斯顿 · 卡曼(Christian Kramp,1760~1826)于 1808 年发明的运算符号,是数学术语。一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1,即 0!=1。自然数n的阶乘写作n!。1808年,基斯顿·卡曼引进这个表示法。
亦即 n!=1×2×3×...×(n-1)×n
阶乘亦可以递归方式定义:
0! = 1,n! = (n-1)! × n。
必修一:数据与计算
3.2.4 循环结构的程序实现
使用自定义函数def语句:
直接法Python代码:
1 s=1
2 i=1
3 for i in range(1,101):
4 s=s*i
5 i=i+1
6 print (”100阶乘是:”,s)
1 s=1
2 for i in range(1,101):
3 s=s*i
4 print(s)
1 def factorial(n):
2 s=1
3 for i in range(2,n+1):
4 s=s*i
5 return s
6 print(factorial(5))
优化的for语句:
【问题】设计一算法,求100的阶乘。
100!
必修一:数据与计算
1、在Python中,下列程序是实现计算1 × 2 × 3 × …… × 10的积,在第1行和第3行的下划线处应该填写( )
A、s=1 s=s*x
B、x=1 s=s*x
C、s=0 x=s*x
D、x=0 x=s*x
A
1 ____________________________
2 For x in range(1,11):
3 _______________________
4 print(s)
s=1
s=s*i
练习
必修一:数据与计算
2、运行下列Python程序代码后输出的结果是( ):
A、1 5
B、5 1
C、24 4
D、24 5
练一练
C
1 sum=1
2 for i in range(1,5):
3 sum=sum*i
4 print(sum,i)
必修一:数据与计算
3、在Python中,下列程序执行后,最后一行现实的数字是( ):
A、2
B、52
C、100
D、102
B
练一练
1 for i in range(2,100,50):
2 print(i)
必修一:数据与计算
4、下列python程序用于计算0到100之间的偶数和,程序第二行下划线处应填入:
A、100 1 B、100 2
C、101 1 D、101 2
练一练(2022年春节学期学业水平考试)
D
1 s=0
2 for i in range(0,________,_________):
3 s=s+i
4 print(s)
必修一:数据与计算
【4、变型】下列python程序用于计算0到100之间的奇数和,程序第二行下划线处应填入:
A、100 1 B、100 2
C、101 1 D、101 2
练一练(2022年春节学期学业水平考试)
B
1 s=0
2 for i in range(0,________,_________):
3 s=s+i
4 print(s)
必修一:数据与计算
【4、变型】下列python程序用于计算0到100之间的正整数之和,程序第二行下划线处应填入:
A、100 1 B、100 2
C、101 1 D、101 2
练一练(2022年春节学期学业水平考试)
C
1 s=0
2 for i in range(0,________,_________):
3 s=s+i
4 print(s)
必修一:数据与计算
5、民间流传着“韩信点兵”的故事。韩信带1500名士兵打仗,战死四五百人,剩下的士兵排队,站3人一排,多出2人;站5人一排,多出4人;站7人一排,多出6人。韩信马上说出人数:1049人。补充完善下面python程序第3三行划线处代码( )。(教材108页第5题)
A、num%3==2 and num%5==4 and num%7==6
B、num%3==2 or num%5==4 or num%7==6
C、num//3==2 and num//5==4 and num//7==6
D、num//3==2 or num//5==4 or num//7==6
A
练一练(2021年秋节学期学业水平考试)
1 #韩信点兵
2 for num in range(1000,1100):
3 if _____________________________:
4 print(“剩余士兵数是:”,num)
必修一:数据与计算
6、某公司在第一年购买了一台价值为120万的设备,该设备的价值在使用过程中逐年减少。已知从第二年到第六年,每年初的价值比上年减少10万元;从第七年开始,每年初的价值为上年的75%。编写python程序计算第十年初的设备的价值,程序第5行下划线处应填入( ):
A、value=120-10 B、 value=value-10
C、value=120-i D、 value=value-i
1 #计算设备现有价值
2 value=120
3 for i in range(2,11)
4 if i<=6:
5 __________________
6 else:
7 value=value*0.75
8 print (“该设备第十年初的价值为:”,value,“万元”)
B
练一练(2021年秋节学期学业水平考试)
第二年到第六年每年初的价值比上年减少10万元,则第一年为value,则每年为:
value= value-10。选B。
必修一:数据与计算
在Python中,print函数后会带很多参数,例如:
print(num,end =‘‘)
其中“end=’ ’”的作用相当于在print()函数的结束值设置一个空格。这样,下一次对print()的调用结果将直接从空格处的右边开始。而print()函数默认以换行符作为其结束值。end = ‘ ’时,end值为空格,end = ‘’时end值为空字符串,end=‘python’,end的值为“python”。
拓展链接
例如:
3.2.4 循环结构的程序实现
1 print(“2024年”,end = ‘秋季学期’) #end值为字符串‘秋季学期’
输出结果为: 2024年秋季学期
例如:
1 print(‘*’,end = ‘’) #end值为空字符串
输出结果为: *
必修一:数据与计算
【例】在Python中,下列程序执行后会看到( )个“*”:
A、2 B、10 C、5 D、15
A
拓展链接
1 for x in range(0,10,5):
2 print(“*”,end=“ ”)
【分析】先要分析循环了多少次,才能确定“*”的数量。
range(0,10,5)一共生成[0,5]两个数,即循环了2次,所以一共产生了两个“*”。
必修一:数据与计算
1、在Python中,下列程序执行后会看到( )个“*”:
A、7 B、9 C、6 D、12
D
练一练(2020年秋季学期学业水平考试)
【分析】先要分析循环了多少次,才能确定“*”的数量。
range(0,3)一共生成[0,1,2]三个数,即循环了3次; range(0,4)一共生成[0,1,2,3]四个数,即循环了4次;所以一共产生了3*4个“*”。
1 for x in range(0,3):
2 for y in range(0,4)
3 print(“*”,end=“ ”)
必修一:数据与计算
while语句
在许多情况下,当一个循环执行之前,可能并不知道它需要执行的次数。这时,就可以使用 while循环。其常见格式如下:
while <条件>:
<循环体>
while循环在执行时,首先会判断条件是否为真,如果条件为真,执行一次循环体,再判断条件是否为真,如果任然为真,那么再执行一次循环体,以此类推,直到条件为假时退出while语句。
无论哪一种循环结构,都有4个必不可少的部分:初始部分、循环条件、循环体、循环变量 。
3.2.4 循环结构的程序实现
循环体
循环条件满足?
是
否
当型循环
缩进
关
键
字
冒号
当型循环(while loop)在每次循环开始之前先判断条件是否成立,只有条件为真时才进入循环体执行操作。如果条件为假,则跳过循环体直接结束循环。
必修一:数据与计算
【思考与练习】某城市现有人口80万,如果每年的人口增长率为1.2%,问:多少年以后该城市的人口达到100万?
分析如下:
今年人口总数:s=80
第1年人口总数:s1=80+80*0.012
第2年人口总数:s2=s1+s1*0.012
第3年人口总数:s3=s2+s2*0.012
……
第n年人口总数:sn=sn-1+sn-1*0.012
于是得到计算公式:
s=s+s*0.012
3.2.4 循环结构的程序实现
开始
S=80
s<=100?
s=s+s*0.012
结束
T
F
n=0
n=n+1
输出n
必修一:数据与计算
【思考与练习】某城市现有人口80万,如果每年的人口增长率为1.2%,问:多少年以后该城市的人口达到100万?
参考程序如下:
开始
S=80
s<=100?
s=s+s*0.012
结束
T
F
n=0
n=n+1
3.2.4 循环结构的程序实现
1 s=80
2 n=0
3 while s<=100:
4 s=s+s*0.012
5 n=n+1
6 Print (n,“年之后该城市人口达到100万”)
输出n
①
②
③
④
⑤
⑥
必修一:数据与计算
1、如下程序段:
执行后,a、b的值分别是( )
A、4 2 B、16 64
C、8 8 D、2 1
1 a=2
2 b=1
3 while a>b:
4 b=a*b
5 a=2*a
练一练
一共循环了:
第一次:a=2,b=1,则a>b,那么
a=2*2=4,b=2*1=2
第二次:a=4,b=2,则a>b,那么
a=2*4=8, b=4*2=8
第三次:a=8,b=8, 则a=b,那么
a=2*8=16,b=8*8= 64
第四次:a=16,b=64,则a<=b,
退出循环
B
必修一:数据与计算
2、“猜数游戏”中,计算机随机生成一个0~10之间的整数,用户输入一个整数进行猜测,计算机根据用户输入的数据进行比对,直到用户猜中为止。为了实现“猜数游戏”,补充完善下列Python程序第5行代码:
A、guess!=number B、 guess=! number
C、guess==number D、 guess=number
1 #猜数游戏
2 import random
3 number=random.randint(0,10)
4 guess=int(input(“请输入猜测的数:”))
5 while _______________________
6 guess=int(input(“猜错了,请继续输入猜测的数:”))
7 print (“恭喜你,猜对了!”)
练一练(2021年秋季学期学业水平考试)
A
必修一:数据与计算
3、设计一个算法,求满足1+2+3+……+n的大于100 的最小正数?
1 s=0
python参考程序如下:
2 i = 0
3 while s < =100:
4 i += 1
5 s += i
6 print(“满足1+2+3+...+n大于100的最大 i 为:", i)
开始
结束
i=1,s=0
s=s+i
i=i+1
S<=100?
输出i-1
Y
N
练一练
必修一:数据与计算
4、“不积跬步,无以至千里;不积小流,无以成江海。”每天进步一点点,一年后,你将进步很大;而每天退步一点点,一年后,你将落后很多。为完成两个励志公式1.01365≈37.8和0.99365 ≈0.03的计算,补充完善下面Python程序第6行划线部分的代码。
A、0.99**365 B、s2*0.99
C、s2*1.01 D、1.01**365
练一练(2021年春节学期学业水平考试)
B
1 #计算1.01的365次幂,0.99的365次幂
2 s1=1
3 s2=1
4 for i in range(365):
5 s1=s1*1.01
6 s2=_____________
7 print(“每天进步一点点,365天后你将得到:”,s1)
8 print(“每天进步一点点,365天后你将得到:”,s2)
必修一:数据与计算
【编写程序】
使用for语句实现:
5、我国古代数学家张丘建在《算经》中提出如下数学问题:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问翁、母、雏各几何?使用Python语言编写计算机程序解决该问题。
【分析-抽象与建模】假设100钱可以买到x只公鸡,y只母鸡,z只小鸡。根据题意可得下列方程组:
x+y+z=100
5x+3y+z/3=100
1 for x in range(21):
2 for y in range(34):
3 for z in range(100):
4 if 5*x+3*y+z/3==100:
5 print(x,y,z)
练一练
必修一:数据与计算
6、所谓“水仙花数”是指一个三位数,其各位数字的三次方之和等于该数本身。例如:153=13+33+53,故153是水仙花数,下面的程序用于输出100到999之间的水仙花数,完成划线处程序填空。
开始
k=100
k<=999?
k<=x**3+y**3+z**3?
x=k//100,y=k//10%10,z=k%10
输出k
结束
T
T
F
F
自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。(例如:当 n 为 3 时, 有 13 + 53 + 33 = 153,153 即是 n 为 3 时的一个自幂数,3 位数的自幂数被称为水仙花数。当 n 为 4 时, 有 14 + 64 + 34 + 44 = 1634,1634即是 n 为 4时的一个自幂数,4 位数的自幂数被称为玫瑰花数。 )。
1 for k in range(100, 1000):
2 x = k // 100
3 y = ①
4 z = k % 10
5 if : ②
6 print(k)
k // 10% 10
k == x**3 + y**3 + z**3
练一练
必修一:数据与计算
break:在for循环或while循环结构中使用break语句,用于结束整个循环。
continue:在for循环或while循环结构中使用continue语句,用于结束当前循环。continue关键字仅仅只结束当前这一轮循环,而不会结束全部循环。
相同:
1. break 和 continue 都有着结束当前这次循环的作用。
2. break 和 continue 都经常和if 搭配使用。
3. break 和 continue 是单独的语句,不需要参数,也不能放在判断语句中。
不同:
1. break 是跳出循环,不继续下次循环;continue是结束当前这次循环,但是还继续下次循环。
2. break 对 for else 和 while else 有特殊的作用,continue没有。
3. break 应用的要比continue广,多数情况下用 break 而不是 continue。
3.2.4 循环结构的程序实现
必修一:数据与计算
语句1
表达式1
表达式2
语句2
循环的下一个语句
T
T
F
F
break
Break 在循环结构中使用break语句,用于结束整个循环。
3.2.4 循环结构的程序实现
break 语句用于跳出当前所在层的循环,无论是 for 循环还是 while 循环,当 break 语句被执行时,控制流将跳出循环体,继续执行紧随循环块后面的代码。break 语句通常与条件语句(如 if 语句)一起使用,用来在满足特定条件时提前退出循环。
使用 break 退出 for 循环:
1 # 遍历一个列表
2 for item in [1, 2, 3, 4, 5]:
3 # 如果元素值为3,退出循环
4 if item == 3:
5 break
6 print(item)
在这个例子中,for 循环将遍历列表中的每个元素。当列表中的元素值为 3 时,if 语句的条件成立并执行 break 语句,导致从循环中跳出,因此后续的元素(4 和 5)不会被打印。
必修一:数据与计算
3.2.4 循环结构的程序实现
1 for x in range(1,6):
2 if in==3 :
3 break
4 print( i )
1 for x in range(1,6):
2 if in==3 :
3 continue
4 print( i )
输出结果:1,2
输出结果:1,2,3,4,5
必修一:数据与计算
语句1
表达式1
表达式2
语句2
循环的下一个语句
T
T
F
F
continue
Continue 在循环结构中使用continue语句,用于结束当前循环。
3.2.4 循环结构的程序实现
必修一:数据与计算
Break使用示例:本例子中轮询列表变量ls,当轮询到“深”这个字时候,直接结束整个for循环,从而只打印“深”之前的“桃花潭水“。
输出结果:桃花潭水
break语句用于结束循环,若循环中使用break语句,程序执行到break语句时会结束循环;若循环嵌套使用了break语句,程序执行到break语句时会结束本层循环。 break就像是终止按键,不管执行到哪一步,只要遇到break,不管什么后续步骤,直接跳出当前循环。
ls=["桃","花","潭","水","深","千","尺"]
s="“
for i in ls:
if i == "深":
break
s = s + i
Print(s)
3.2.4 循环结构的程序实现
必修一:数据与计算
Continue使用示例:本例中for循环遍历字符串s,当遍历到字符等于"l"的时候,continue关键字仅仅只结束当前这一轮循环,而不会结束全部循环,所以当第三第四次遍历到"l"以后,for循环会继续遍历列表下一个字符,即"o"。所以最终纳入n=n+1统计的字符是"heoword",一共7个。
注意:continue语句并没有使整个循环终止,continue 只能在循环语句中使用。
s="helloworld“
n=0
for i in s:
if i == "l":
continue
n = n + 1
print(n)
continue语句用于在满足条件的情况下跳出本息循环,该语句通常也与if语句配合使用。
输出结果:7
3.2.4 循环结构的程序实现
必修一:数据与计算
本节课到此结束
$