(共25张PPT)
第3章
课时10 顺序结构及分支结构的程序
实现
信息技术
课标梳理·微知著
教材重点 课标要求 学业质量水平
顺序结构 掌握顺序结构的使用方法 2-2
分支结构 掌握if语句的使用
方法 2-2
教材研析·固基础
1
顺序结构的程序实现
一、顺序结构
1.程序实现:按照算法中的顺序逐步实现。
范例:已知初速度、加速度和时间,求位移。
v0=float(input('请输入初速度(米/s):'))
a=float(input('请输入加速度(米/s2):'))
t=float(input('请输入时间(s):'))
s=v0 t+a t 2/2
print('位移了',s,'米')
典例1 有如下Python程序段:
a=1
b=2
a=a+b
b=a+b
print(a,b)
执行该程序段后,输出结果是________,该程序段的结构类型是_____ (单选,填字母:A.顺序结构/B.分支结构/C.循环结构)。
3 5
A
解析 根据代码执行顺序可知最终结果是a=3,b=5,该程序段结构是典型的顺序结构。
典例2 已知a=1;b=2,以下能实现交换a、b两个变量值的程序段是________________。(多选,填序号)
①t=a;a=b;b=t
②a=a+b;b=a-b;a=a-b
③a,b=b,a
④a=b;b=a
⑤a=a b;b=a/b;a=a/b
①②③⑤
二、分支结构
分支结构可以用if语句来实现。主要有两种格式。
2
简单分支语句
在Python中,if条件语句的一般格式如下:
if<条件>:
<语句块1>
else:
<语句块2>
if条件语句由if关键字构成,后面跟着一个条件和一个冒号。冒号的作用是告知接下来要创建一个新的语句块,同一个if语句中,if、else下方的语句块必须采用相同的缩进。
条件实际上是一个表达式,它的值可以是真(True)或假(False)。当条件为真时,执行语句块1中的语句,否则(条件为假时)执行语句块2中的语句。
【知识拓展】
☆if条件语句格式中,else分支也可以省略。
☆在Python中,代码的缩进非常重要,缩进是体现代码逻辑关系的重要方式。同一层次的代码块必须保证相同的缩进量,一般以4个空格作为1个缩进单位,可以按4次空格键或按1次“Tab”键。
典例3 (2022浙江7月学考)用Python算法控制结构描述“您所在街道25分钟后小雨,50分钟后雨停”,设t为距离天气预报发布时间的间隔(单位:分),下列选项正确的是( )
A.if t>50:
print(″雨停″)
elif t>25:
print(″小雨″)
B.if t>50:
print(″雨停″)
else:
print(″小雨″)
A
C.if t>25 and t<=50:
print(″小雨″)
else:
print(″雨停″)
D.if t>25:
print(″小雨″)
elif t>50:
print(″雨停″)
解析 本题考查分支语句。B选项,else分支表示的条件是t<=50时“小雨”,不符合题意,B错误;C选项,else分支表示的条件是t<=25 or t>50时“雨停”,但题干并没有给出t<=25时的状态,故C错误;D选项,若t>25程序只会执行第一个分支,输出“小雨”,t>50这个分支不再判断执行,故D错误;选项A正确。
3
多分支语句
if-elif语句。在Python中,可用带有elif子句的if语句来实现多分支结构,其格式是:
if <条件1>:
<语句块1>
elif <条件2>:
<语句块2>
……
elif <条件n>:
<语句块n>
[else:
<语句块n+1>]
【知识拓展】
一个if语句可以包含多个elif子句,最后一个else子句是可选的。elif子句仅当其if语句中的条件为假时才执行。如果if语句和elif子句中的条件都不为真时,末尾的else子句的语句块就会被执行。因此,带有elif分支的if语句有一个很重要的特性:只要某个条件为真,计算机就会执行其所对应的语句块,且每个分支最多只能执行一次,这是分支结构和循环结构最大的区别。
典例4 用Python算法控制结构描述排队时间小于15分钟为“通畅”;大于等于15分钟且小于等于30分钟为“忙碌”;大于30分钟为“拥挤”。设t为排队时间(单位:分钟)、zt为采样点的状态,下列选项不正确的是( )
A.if t>30:
zt='拥挤'
elif t>=15:
zt='忙碌'
elif t>=0:
zt='通畅'
B.if t>30:
zt='拥挤'
elif t<=30:
zt='忙碌'
elif t<15:
zt='通畅'
B
C.if t>=0:
if t<15:
zt='通畅'
elif t<=30:
zt='忙碌'
else:
zt='拥挤'
D.if t<=30:
if t>=15:
zt='忙碌'
elif t>=0:
zt='通畅'
else:
zt='拥挤'
解析 本题考查分支语句知识。选项B中第2个条件“t<=30”包含了小于15的情况,和第3个条件有重叠,若输入10,则第二个分支优先执行,这样zt='忙碌',而此时正确结果应该是zt='通畅'。
典例5 (2023浙江6月选考)已排序的列表a有n个整型元素,现要查找出现次数最多的值并输出。若出现次数最多的值有多个,则输出最前面的一个。实现该功能的程序段如下,方框中应填入的正确代码为( )
c,m,v=1,1,0
for i in range(1,n):
________
print(a[v])
A
A.if a[i]==a[i-1]:
c+=1
if c>m:
m=c
v=i
else:
c=1
B.if a[i]==a[i-1]:
c+=1
if c>m:
m=c
v=i
else:
c=1
C.if a[i]==a[i-1]:
c+=1
else:
if c>m:
m=c
v=i-1
c=1
D.if a[i]==a[i-1]:
c+=1
else:
if c>m:
m=c
v=i-1
c=1
解析 本题考查枚举算法及if语句的逻辑结构知识。由于列表a已经实现有序,因此数值相同的数都是相邻的,这样统计数值相同的数可以简化为相邻两个数的检查,其实现的代码是判断a[i]是否和a[i-1]相同即可。变量c用于统计相同数的数量,m用于记录相同数的最大数量,而变量v用于记录出现次数最多的数在列表a中的位置。其算法思想是:若相邻两个数相等,则计数器c加1,否则应该将c变为初值1,首先可以排除选项B,因为该选项中else分支不符合逻辑。选项CD都存在缺陷,例如最多的一组相同的数出现在列表的最后时,均不能准确统计结果。例如a=[2,3,3,3,4,4,4,4],此时输出值为3,但正确结果应该为4。选项A逻辑结构合理,故选A。
典例6 (2023浙江6月选考)某仓库有一排连续相邻的货位,编号依次为0~n-1,用于放置A、B两种类型的箱子,A型箱子占2个相邻货位,B型箱子占1个货位。编写程序,根据已完成的放置或搬离操作,输出空货位数及还可以放置A型箱子的最大数量(不移动已放置的箱子)。请回答下列问题:
箱子类型 操作类型 货位编号
B 放置 5
A 放置 2,3
B 放置 0
A 放置 7,8
A 搬离 2,3
(1)若n为10,开始时货位全空,经过如图所示的放置或搬离操作后,不移动已放置箱子的情况下,还可放置A型箱子的最大数量为______个。
2
(2)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。
#读取货位总数,存入n,代码略。
cnt1=n
lst=[0] n #货位状态,0表示对应的货位为空
while True:
#读取本次已操作的数据:箱子类型、操作类型、货位编号起始值,存入t、d和s,代码略
if t=='A':
w=2
①________________:
w=1
else: #t不是'A'或'B'时退出循环
break
if d =='P': #d为P时表示放置,否则表示搬离
elif t=='B'
②_______________________
else:
cnt1+=w
lst[s]=1-lst[s]
if t=='A':
lst[s+1]=1-lst[s+1]
i,cnt2=0,0
while iif lst[i]==0 and lst[i+1]==0:
③________________
cnt2+=1
i+=1
print('当前空货位数:',cnt1,',还可放置A型箱子的最多数量:',cnt2)
cntl-=w(或cntl=cntl-w)
i+=1(或i=i+1)
解析 本题考查Python编程基础及解决实际问题的能力。
(1)10个空位放置情况如下:由于A型箱一个要占2个相邻货位,因此最多可放2个A型箱子。(2)①从初始cnt1=n可以看出,cnt1是空货位数量。再根据if语句第一个分支:t=='A'时,w=2可知,当t=='B'时,搬离数量应为1,故①处填:elif t=='B'。②d=='P'时表示放置,否则表示搬离。而搬离时cnt1+=w,w变量为应搬离的数量,搬离时空位加w,则放置时空位减w,故此处填:cnt1-=w。③由代码可知,统计连续两个空位的个数,统计完后指针i要向后跳2,故③处填:i+=1。