资源简介 课时4 分支结构及程序实现课时目标1.理解分支结构的执行过程。2.掌握分支结构的三种if语句格式的使用。3.能根据实际问题选用合适的分支结构来解决。1.选择结构通过判断某些特定条件是否满足来决定下一步的执行流程,常见的有单分支选择结构、双分支选择结构、多分支选择结构。2.一个选择结构是一个语句块,块内的语句一般缩进4个空格。在Python中对缩进有严格要求,可以根据缩进来判断语句的从属关系。3.选择语句条件表达式结果的数据类型是逻辑型,值只有True和False两个。4.算法进行程序实现时,分支结构可用if语句来实现。if语句一般格式是:(1)单分支选择结构if <条件>:<语句块1>(2)双分支选择结构if<条件>:<语句块1>else:<语句块2>(3)多分支选择结构if <条件1>:<语句块1>elif <条件2>:<语句块2>…elif <条件N>:<语句块N>else:<语句块N+1>①语句块是一行或放在一起的多行语句,一般通过行缩进来标识if、else、elif下方的语句块必须采用相同的缩进。②分支结构的条件只判断一次,符合条件的语句块也只执行一次。 例1 调查发现人们更倾向于选择数字对称的车牌号,如车牌号“浙H64M46”。于是小石编写了一个判断车牌号是否对称的代码,Python程序如下:cp=input("请输入车牌号(格式如“浙H64M46”):")s1=cp[2:4]s2=① if② : print("不是对称车牌")else: print("是对称车牌")为实现功能,划线处代码应为 ( )A.①cp[6:5:-1] ②s1==s2B.①cp[5:] ②s1!=s2C.①cp[5:6] ②s1==s2D.①cp[:-3:-1] ②s1!=s2答案 D解析 本题考查字符串的切片。语句s1=cp[2:4]取字符串中索引位置2和3的字符。若要对称,则对应取cp索引位置为6和5的值。A选项索引位置5取不到。B选项不能正向取。C选项只能取一个字符。D选项当步长为负值时,第一个参数默认为-1,即字符串cp中最后一个索引位置,-3是取不到的,只能取了倒数第2个。变式训练1 有下列Python程序段:import randoms=input("请输入字符串:")x=random.randint(3,6) #产生一个[3,6]之间的随机整数n=len(s)if len(s[0:x]) r=s[x:n]+s[0:x]else: r=s[0:x]+s[x:n]print(r)执行该程序段,若输入“helloworld”(不包含双引号),则输出的结果不可能的是 ( )A.loworldhel B.oworldhellC.helloworld D.worldhello答案 D解析 本题综合考查了random模块函数的应用及分支结构及字符串的切片。x为采用random模块产生的[3,6]之间的随机整数,按照题意输入helloworld后n的值为10,带入if的条件表达式可得,执行第一个分支(将索引值x前面的字符后置)的条件为x<5,推得执行第二个分支(不改变字符顺序)的条件为x>=5,通过对选项的处理可知A选项中hel后置,x的值为3,可行;B选项hell后置,x的值为4,符合条件,可行;C选项不改变顺序,x>=5,可行;D选项hello后置,可得x=5,而x=5时应执行第二个分支的语句。例2 用Python算法控制结构描述“您所在街道25分钟后小雨,50分钟后雨停”,设t为距离天气预报发布时间的间隔(单位:分钟),下列选项正确的是 ( )答案 A解析 本题考查选择结构。根据时间t,分成三个阶段。t<=25没有任何操作,25和50之间是小雨,50之后是雨停。B选项只能表示两种情况。C选项把t<=25归结为雨停。D选项若t>50,肯定满足条件t>25,因此只能表示一种情况。变式训练2 某市“一户一表”水费单价标准如下:第一档次:每户每月不超过17立方米的用水量,供水价格为2.4元/立方米;第二档次:每户每月17立方米(不含)到30立方米(含)的用水量,供水价格比第一档提高0.5倍;第三档次:每户每月超过30立方米的用水量,供水价格比第一档提高2倍。根据水费单价标准,用Python算法控制结构描述“第二、三档次的供水价格”。设volumn为某个月的用水量,price为供水价格初始值为2.4(单位;元/立方米),下列选项正确的是 ( )A.if volumn<=30: price=price*1.5 else: price=price*3B.if volumn>30: price=price*3elif volumn>17: price=price*1.5C.if volumn<30: price=price*1.5 else: price=price*3D.if volumn>=30: price=price*3elif volumn>=17: price=price*1.5答案 B解析 本题考查选择算法结构。根据题目含义,将水价分为三个档次,其中第一个档次是原价。A选项不能区分第一档次和第二档次。B选项price为供水价格初始值为2.4,选择结构中有两种情况,符合题意。C选项当volumn小于30,包含第一二档。D选项的临界值不成立。例3 象限是平面直角坐标系(笛卡尔坐标系)中横轴和纵轴所划分的四个区域,每一个区域叫做一个象限。象限以原点为中心,x,y 轴为分界线,原点和坐标轴上的点不属于任何象限。某同学根据输入的坐标点(x,y)来判断该坐标点的位置所在,以下实现该分类的 Python 程序段中正确的是 ( )A.if x==0 and y==0: result="原点"if x==0 or y==0: result="数轴"if x!=0 and y!=0: result="象限"B.if x==0 or y==0: result="数轴"if x==0 and y==0: result="原点"else: result="象限"C.if x!=0 and y!=0: result="象限"if x==0 or y==0: result="数轴"else: result="原点"D.if x!=0 and y!=0: result="象限"if x==0 or y==0: result="数轴"if x==0 and y==0: result="原点"答案 D解析 本题考查Python基本控制结构。 (0,0)是原点,即 if x==0 and y==0 表示原点;(0,y)或者(x,0)分别表示 y 轴与 x 轴。A 选项,x==y==0 时,第 1 个和第 2 个 if 均成立。B选项if x==0 or y==0 且 x 与 y 不同时为 0 表示数轴,在第2个分支语句中,再次判断为"象限"。C选项条件x!=0 and y!=0成立,判断为"象限",在第2个分支语句中,再次判断为"原点",因此原点的判断需在数轴之前。 D选项分三种情况,用3条分支语句来表达这种情况。变式训练3 BMI与身体状况关系如图所示BMI<18 18≤BMI≤24 BMI>24偏瘦 正常 偏胖已知某同学的BMI值存储在变量X中,小蓝编写程序判断该同学的身体状况信息,并保存到变量Y中,则下列程序段无法实现该功能的是 ( )A.Y = "偏瘦" if X>=18: Y = "正常" elif X>24: Y = "偏胖"B.Y="偏胖" if X<18: Y = "偏瘦" elif X<=24: Y = "正常"C.if X>24: Y = "偏胖" elif X>=18: Y = "正常"else: Y = "偏瘦"D.if 18<=X<=24: Y = "正常" else: Y = "偏瘦" if X>18: Y = "偏胖"答案 A解析 本题考查 Python分支结构基本语法。A 选项只要变量 X 的值大于等于 18,输出结果均为“偏胖”,与题干要求不符。例4 正整数n若是它平方数的尾部部分若与该正整数n相等,则称n为同构数。判断一个两位数n是否是同构数。为实现上述功能,请在划线处填入合适的语句。n=int(input("输入一个正整数"))if : print('是同构数')else: print('不是同构数')答案 n**2%100==n解析 本题考查的是选择结构的条件和取余运算符的应用。选择结构要选择合适的条件判断,n是它平方数的尾部,n平方数的后两位数为n**2%100。变式训练4 判断当前计算得到验证码变量yzm(整型)与商品识别条码s(字符串型)第13位是否相等,为实现上述功能,请在程序划线处填入合适的语句。s="3203225155569"if : print("验证通过")else: print("验证不通过")答案 yzm==int(s[12])解析 条件为计算结果与最后一位字符相同。但要注意类型的匹配,前者是数字,后者是字符串。例5 输入一个身份证号码s(字符串型),如果他的第17位是奇数,表示该公民的性别为男性,否则为女性。为实现上述功能,请在程序划线处填入合适的语句。s="330522********5115"if : print("女性")else: print("男性")答案 int(s[16])%2==0或int(s[16])%2!=1解析 取出身份证号码s的第17位的值为文本,不能用于算术运算。判断是否是奇数的条件是除以2后的余数是否为0。变式训练5 输入一个正整数n,判断它是否是一个完全平方数,若是则输出“Yes”,否则输出“No”。为实现上述功能,请在划线处填入合适的语句。n=int(input('please input n:'))if : print('Yes')else: print('No')答案 int(pow(n,0.5))**2==n或int(n**0.5)**2==n解析 如果n的算术平方根取整后再平方等于原数n,则n为完全平方数,否则不是。求算术平方根可用pow函数或**运算实现,因此,判断条件可写为int(pow(n,0.5))**2==n或int(n**0.5)**2==n。例6 若三条线段的长度分别为a、b、c,判断他们是否能构成三角形(任意两边之和大于第三边)。为实现上述功能,请在程序划线处填入合适的语句。a=float(input('please input a:'))b=float(input('please input b:'))c=float(input('please input c:'))if : print('能构成三角形')else: print('不能构成三角形')答案 (a+b)>c and (b+c)>a and (a+c)>b或a+b>c and a+c>b and b+c>a解析 本题考查的知识点是选择结构的多条件表达式。需注意的是:任意两边有几种可能性,他们之间是且还是或的关系。变式训练6 输入一个密码psd,若密码的长度小于6位,则提示“密码长度不能少于6位!”,否则提示“OK!”。为实现上述功能,请在程序划线处填入合适的代码。psd=input('Please input password:')if : print("OK!")else: print("密码长度不能少于6位!")答案 len(psd)>=6解析 本题考查的知识点是选择结构的条件和Len函数的应用。条件是密码长度大于等于6,因此填入的代码为len(psd)>=6。例7 用计算机模拟一个猜商品价格的游戏,首先计算机随机产生一个[20,60]之间的整数x作为商品的价格,用户输入价格,若猜中了,提示“恭喜你猜中了!”,所猜价格与x的差值在5元之内,提示“加油,答案很接近!”,高于5元,提示“你猜得太高或太低了!”。程序代码如下所示,请在程序划线处填入合适的代码:# 计算机随机产生一个[20,60]之间的整数x,并赋于变量shpjg,代码省略jg=int(input("输入你猜的价格:"))if① : print("恭喜你猜中了!")elif② : print("你猜得太高或太低了!")else: print("加油,答案很接近!")答案 ①jg==shpjg ②abs(jg-shpjg)>=5解析 本题考查的是多分支if语句。根据题意与代码可知,①处的判断条件是输入价格与原来价格是否相等,因此,①处代码为jg==shpjg;②处为所猜价格与真实价格的距离在5元以外,因此,②处代码为abs(jg-shpjg)>=5。变式训练7 某旅游景点规定,身高在1.2米以下的儿童免费,身高在1.2及米上,但不超过1.5米的儿童购买半价票,身高超过1.5米的游客购买全价票。实现上述功能的程序如下,请在程序划线处填入合适的代码。h=float(input('请输入身高(单位米):'))if① : print('免费')elif② : print('请购买半价票')else: print('请购买全价票')答案 ①h<1.2 ②h<=1.5解析 本题考查的是多分支if语句。根据题意可知,本题的分支结构条件分别是:h<1.2,1.2<=h<=1.5。因此,①处应填入的代码为h<1.2;②处条件为1.2<=h<=1.5,但elif条件隐含着h>=1.2的条件,因此②处应填入的代码为h<=1.5。变式训练8 用Python语言编写一个程序,实现如下功能:输入某一学生的性别、身高和体重,计算该生的BMI指数并分析其体型情况,得到其体重指数分数,然后输出。体质指数(BMI)=体重(kg)÷身高(m)2(如:70kg÷(1.75m)2=22.86)等级 体重指数分数 男 女偏瘦 80 ≤16.4 ≤16.4标准 100 16.5~23.2 16.5~22.7超重 80 23.3~26.3 22.8~25.2肥胖 60 ≥26.4 ≥25.3编写的程序代码如下,将划线处填写完整。xb=input("输入性别:")sg=float(input("输入身高(单位:m):"))tz=float(input("输入体重(单位:kg):"))① #计算BMI的值,并四舍五入保留两位小数 print("bmi值为:",bmi)if bmi<=16.4: bmizx= 1elif xb=="男" and bmi<=23.2 or xb=="女" and bmi<=22.7: bmizx= 2elif xb=="男" and bmi<=26.3 or xb=="女" and bmi<=25.2: bmizx= 3② : bmizx= 4bz={1:"偏瘦",2:"标准",3:"超重",4:"肥胖"}print("你的体型属于",③ ) 答案 ①bmi=round(tz/sg**2,2) ②else ③bz[bmizx]解析 本题考查多分支选择结构。①根据体质指数(BMI)的计算公式并用round函数保留小数。②除了以上条件外,其余均为肥胖,因此为else。③体型的标准和情况保存在字典bz中,因此按键查找值。 1.有如下Python程序段:a=[2,3,5,6,9]x=min(a);y=max(a);ans=a[1]if x**2>y: ans=ans+x**2 ans=ans∥2else: ans=ans+y ans=ans%yprint(ans)执行该程序段后,输出的内容是 ( )A.6 B.5 C.4 D.3答案 D2.有如下 Python 程序段:# 输入 3 个整数分别存储到变量 a、b、c 中,代码略if a > b and a > c: maxn = aelif b > a and b > c: maxn = belif c > a and c > b: maxn = cprint("a,b,c 的最大值为:", maxn)执行该程序段,输入下列 4 组测试数据,无法正确输出 a、b、c 的最大值的是A.10,20,30 B.20,30,10C.30,10,10 D.10,10,10答案 D3.以下程序实现与计算机玩“石头剪刀布”的游戏(分别用0,1,2代表石头、剪刀、布),游戏规则为:石头赢剪刀、剪刀赢布、布赢石头。代码如下:import randompc=random.randint(0,2)player=int(input("请输入石头(0)、剪刀(1)、布(2):"))if① print("你赢了,恭喜!")elif player==pc: print("平手")else: print("你输了,再接再厉!")解决该问题,上述程序①处填入语句正确的是 ( )A.pc>playerB.pcC.pc-player==1 and player-pc==2D.pc-player==1 or player-pc==2答案 D解析 本题考查多分支选择结构。你赢的可能性有3种,一是石头对剪刀,二是布对石头,三是剪刀对布,其中前2种可能中,pc-player==1,第3种可能性中,player-pc==2。4.某Python代码如下,执行后输出的结果是 ( )L=['pear','apple','orange']n=len(L[2])ans=3if n%2==0: ans*=nelse: ans+=nans-=5print(ans)A.13 B.3 C.18 D.8答案 A解析 本题考查Python列表的切片和分支结构。L[2]为'orange',因此n=len(L[2])值为6,符合分支语句的第一个条件,执行if对应的语句块,此时ans的值为18,再执行ans-=5后ans的值为13,并且输出。5.用Python 算法描述鱼缸水温预警功能:当水温高于32度时, LED灯呈现“红色”;低于27度时,LED灯呈现“蓝色”;其余情况LED灯呈现“绿色”。# 通过传感器获取鱼缸内水温值,并存储到变量 t 中LED="绿色"LED="绿色"if : if t>32: LED="红色" else: LED="蓝色"print("LED 灯颜色显示:",LED)为实现上述功能,划线处正确的 Python 表达式是 ( )A.not(27C.t<27 or t>32 D.t<27 and t>32答案 C6.下列选项中,对变量flag的赋值与其它三项不等价的是 ( )A.if a>b: flag=True flag=FalseB.flag=a>bC.if a>b: flag=True else: flag=FalseD.flag=False if a>b: flag=True答案 A7.有如下程序段:list1=["an","alpha","around","bee","back","cake"]leng=len(list1)if leng>6: z=list1[0]else: z=list1[leng-1]print(z)执行后,输出的结果为 。 答案 cake解析 本题主要考查的是分支结构。len(list1)返回的是列表list1的长度,即leng=6,条件leng>6不满足,因此执行语句z=list1[leng-1],即取出列表中的最后一个元素,因此z="cake",print命令输出字符串内容时,不显示引号,因此输出的结果为cake,而非"cake"。8.如图所示的流程图的功能是根据用水量求水费。回答下列问题:v=① if② : s=2.4*velif v<=30: ③ else: s=4.3*vprint(s)(1)请在程序划线处填入合适的语句。(2)结合算法和流程图分析,若输入用水量为28吨,则输出的s值将为 ,若输入用水量为100吨,则输出的s值为 。 答案 (1)①float(input("输入用水量:"))或float(input()) ②v<=17 ③s=3.35*v (2)93.8 430解析 本题主要考查的是多分支结构的程序实现。(1)v表示的是输入的用水量,水费等于用水量乘以相应的单价,因此要将输入的数转换为实数类型,因此①处语句为float(input("输入用水量:"))或float(input());根据s=2.4*v并对照流程图可知,②处条件为v<=17;根据elif v<=30可知,③处代码为s=3.35*v。(2)用水量为28吨,条件1730,因此s=4.3*100=430。9.下列选项的语句中,与“若 x 小于 0,则 y=-1,否则,y=1”功能相同的是 ( )A.if x<0: y=-1 y=1B.y=1 if x<0 y=-1C.if x<0: y=-1 if x>0: y=1D.if x>0: y=1 else: y=-1答案 B10.用Python算法控制结构描述“小李起床后20分钟后去锻炼,50分钟后锻炼结束去学校”,设t为起床后经过的时间,下列选项正确的是 ( )A.if t>50: print("去学校") else: print("去锻炼")B.if t>50: print("去学校") elif t>20: print("去锻炼")C.if t>20 and t<50: print("去锻炼") else: print("去学校")D.if t>20: print("去锻炼") elif t>50: print("去学校")答案 B11.用Python算法控制结构描述:若水位高于10(不含)或者排水速度小于0.05(不含),发出警告。实时监测到的水位用h表示,排水速度用v表示,下列代码正确的是 ( )A.if h>10: if v<0.05: print("警告!") else: print("正常!")B.if h<=10 or v>=0.05: print("正常!") else: print("警告!")C.if h<=10: print("正常!") elif v>=0.05: print("正常!") else: print("警告!")D.if h>10: print("警告!") elif v<0.05: print("警告!") else: print("正常!")答案 D一、基础巩固 1.使用Python编写一个输出门票价格的程序,代码如下:h=int(input("请输入您的身高:"))if h <=120: p=0elif h>140: p=100else: p=50print("您需要支付的门票价格是:",p)要测试所有分支程序代码是否正确。以下测试数据中,最恰当的一组是 ( )A.120,140 B.130,150C.100,130,140 D.100,130,150答案 D解析 本题主要考查Python分支结构的基础概念,要测试所有分支程序代码是否正确,因为有三个分支,故三个值的取值必须在[0,120],(120,140],(140,+∞),故答案应选D。2.以下选项中,与其他三项功能不同的是 ( )A.maxv=a if b>maxv: maxv=b if c>maxv: maxv=cB.if a>b and a>c maxv=a elif b>c: maxv=b else: maxv=cC.if a>b maxv=a else: maxv=b if c>maxv: maxv=cD.if a>b and a>c: maxv=a if b>a and b>c; maxv=b if c>a and c>b: maxv=c答案 D解析 本题考查分支语句if elif的相关知识。ABC选项的功能是求最大值。A选项默认a是最大值,还有两个选择结构,分别与b和c比较。B选项是多分支选择结构,如果不满足条件a>b and a>c,则a不是最大值,最大值可能是b和c。C选项是两个选择结构,先在a和b是找出最大值,接着最大值与c比较。D选项用3个选择结构来实现,但有一种情况,即a=b=c时,或最大值有2个时,不能实现找出最大值的功能。3.下列Python语句中,能体现“若a大于0则b=a,和否则b=-1”表述并实现其功能的是 ( )A.if a>0: b=a else: b=-1B.if a>0: b=a if a<0: b=-1C.b=-1 if a>0: b=aD.if a>0: b=a elif: b=-1答案 A4.有如下Python程序段:a=[3,6,2.8,14,3,11]sum=a[1]+a[3]-a[5]v=sum%2if v==1: print(1-v)else: print(-1)执行该程序段,输出的结果是 ( )A.1 B.0 C.报错 D.-1答案 B5.有如下Python程序:import mathtotal=float(input("请输入金额:"))if total<=500: total*=0.9elif total<=1500: total*=0.85else: total*=0.75print(math.floor(total))运行程序,输入"1024"后回车,程序的输出结果是 答案 8706.若一个四位数,各个位数上的数字的4次幂之和等于它本身,则称这个数为四叶玫瑰数。编写Python程序,判断输入一个数是否为四叶玫瑰数。(1)四位数4326 (选填:是/不是)四叶玫瑰数。 (2)实现上述功能的Python 程序如下,请在划线处填入合适代码。number=int(input("请输入一个四位数:"))a = number∥1000b =① c = number%100∥10d = number%10if ② : print(number, "是四叶玫瑰数")else: print(number, "不是四叶玫瑰数")答案 (1)不是 (2)① number%1000∥100或number∥100%10 ②a**4+b**4+c**4+d**4==number:7.判断一个三位数i是否是水仙花数的条件是:它的各个位数字a、b、c的立方和与它本身是否相等,若相等为水仙花数,请把下列语句补充完整。a,b,c=1,5,3if : print("是水仙花数")else: print("不是水仙花数")答案 a**3+b**3+c**3==a*100+b*10+c解析 掌握数字的表达,掌握条件的表达。条件是各个数字的立方和与他本身相等,那么各个数字的立方和又该如何表达。8.输出某个温度范围内(从低温t1到高温t2)气体的密度变化情况,输入温度t1和t2,要保证温度t1低于温度t2,把下列语句补充完整。t1,t2=4,3if : t=t1;t1=t2;t2=t答案 t1>t2解析 本题考查的知识点是选择结构的条件和交换语句的应用。从三条语句t=t1;t1=t2;t2=t来看,是要交换t1和t2的值,根据题目的要求,从低温t1到高温t2,因此若t1比t2大时,需要交换两者。9.每周星期一,杭州本地牌照尾号为1和9的汽车是限行的,在汽车牌照本中取得最后一个数字ch(字符串型),判断该车星期一是否限行,请把下列语句补充完整。pz="浙APW559"if : print("限行")else: print("不限行")答案 pz[-1]=="1" or pz[-1]=="9"或者int(pz[-1])==1 or int(pz[-1])==9解析 两个条件满足一个就可以了,但要注意数据类型。10.输入一元二次方程系数a、b、c,输出方程根的情况。请把下列语句补充完整。a=int(input("a="))b=int(input("b="))c=int(input("c="))d=① if a==0: print("一元二次方程a不能为零!")elif② : print("方程有一个根")elif d>0: print("方程有两个根")else: print("方程没有根")答案 ①b**2-4*a*c ②d==0解析 根据d的值来判断是否有根,执行语句中已经提示“a不能为零”和“方程有一个根”。11.输入一个字符串s,判断字符串s中第i个字符的类型,类型分为4种:大写字母、小写字母、阿拉伯数字、其他字符。请回答下列问题。s=input("please string:")i=3① tot=['其他字符','大写字母','小写字母','阿拉伯数字']t=0if ch>='A' and ch<="Z": t=1elif ch>='a' and ch<="z": t=2elif ② :#如果是数字 t=3print('当前字符的类型为:',③ ) (1)请在程序划线处填入合适的代码。(2)运行当前程序,输入s的内容为“Lm@”,则所属类型对应的列表元素为 。 答案 (1)①ch=s[i-1] 或ch=s[2]②ch>='0' and ch<='9'或'9'>=ch>='0'③tot[t](2)tot[0]解析 本题考查的是多分支语句。字符串中第i个字符,则在字符串中的索引号为i-1,因此①中代码为ch=s[i-1],因为i=3,因此也可以写为ch=s[2];②处语句的功能是判断当前字符是否为数字,因此代码为ch>='0' and ch<='9',也可写为'9'>=ch>='0';变量t对应当前字符所属的类型,因此,③处代码为tot[t]。(2)运行当前程序,输入s的内容为“Lm@”,则第3个字符为“@”,属于其他字符类,因此对应的列表元素为tot[0]。12.设计一个程序,根据输入的劳务报酬收入计算劳务报酬所得税。解决此问题的流程图如图所示。编写的Python程序代码如下所示,请在划线处填入合适的代码。x=int(input("请输入劳务费"))if x<0 or x>1000000: print("请检查输入的数据")else: if x<=800: y=0 elif① : y=(x-800)*0.2 else: ② print("应交税收"+③ ) 答案 ①x<=4000 ②y=x*0.16 ③str(y)解析 在多分支选择结构中,每个分支逐一匹配,在第二个分支中,已经不满足x<=800,即所有的x均大于800,因此只需要说明他小于4000即可。二、能力提升13.COD(化学需氧量)是衡量水质污染程度的重要指标之一,污水处理时根据污水的COD指标来计算COD去除剂的投放量。当COD指标x小于50时,剂量为10,指标大于等于50且小于等于500时,剂量为1.2x/5,指标超过500时,剂量为1.5x/4。运行程序后,输入COD指标,输出计算结果。为实现上述功能,请在划线处填入合适的代码。x=int(input("请输入COD指标x"))if x<50: y=10① : y=1.2*x/5else: ② print("所需剂量为"+str(y))答案 ①elif x<=500 ②y=1.5*x/4解析 注意多分支选择结构的书写格式。14.模拟一个简单计算器,输入两个数和一个运算符(加、减、乘、除),进行算术运算,并输出运算结果。程序运行时,先后输入第一个数、运算符和第二个数,输出运算结果。当输入的运算符不是加、减、乘、除四种运算符时,则输出“运算符不正确”;当进行除法运算时,如果除数为0,提示输出“除数不能为零”。为实现上述功能,请在划线处填入合适的代码。x=int(input("请输入第1个数"))ch=input("请输入运算符")y=int(input("请输入第2个数"))flag=Falses="+-*/"if ch in s: flag=True if ch=="+": z=x+y elif ch=="-": z=x-y elif ch=="*": z=x*y else: if① : print("除数不能为0!") flag=False else: z=x/yif② : print("运算的结果为:"+str(z))else: print("运算符不正确")答案 ①y==0 ②flag或flag==True解析 提示"除数不能为0!",因此应填写当y等于0时的情况。由于y=0时,已经输出了内容,此时flag=False,因此只有当flag==True时才有输出。15.编写Python程序,实现如下功能:输入AQI指数,输出该AQI值所对应的空气质量等级及空气状况。程序运行效果如图所示。请输入AQI指数值:220空气质量等级为:V 空气状况为:重度污染AQI指数所对应的空气质量等级及空气状况如表所示:AQI指数 0-50 51-100 101-150 151-200 201-300 >300等级 Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ空气状况 优 良 轻度污染 中度污染 重度污染 严重污染实现上述功能的程序如下。st="Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ"aqi=float(input("请输入AQI指数值:"))if aqi<=50: ss="优" dj=1elif aqi<=100: ss="良" dj=2elif① : ss="轻度污染" dj=3elif aqi<=200: ss="中度污染" dj=4elif aqi<=300: ss="重度污染" dj=5else: ss="严重污染" dj=6② print("空气质量等级为:"+skydd,"空气状况为:"+ss)(1)程序运行时,输入200,则屏幕上显示的内容为 。 (2)请在程序划线处填入合适的代码。答案 (1)空气质量等级为:Ⅳ,空气状况为:中度污染 (2)①aqi<=150 ②skydd=st[dj-1]解析 本题主要考查的是多分支结构。(1)aqi=200时,对应的等级为Ⅳ,属于中度污染,因此屏幕上显示的内容为“空气质量等级为:Ⅳ,空气状况为:中度污染”。(2)①处空气状况为“轻度污染”,因此条件为aqi<=150;空气质量等级存储在字符串skydd中,字符串的第一个字符的索引号为0,因此②处代码为skydd=st[dj-1]。16.现有编号为"Xs001"、"Xs002"的两位学生,分别输入他们的性别和身高,按一定的规则进行排列,输出排列后的座位信息,实现该功能的程序代码如下:xm1="Xs001"xm2="Xs002"xb1=input("请输入第1位学生性别:")sg1=float(input("请输入第1位学生身高(米):"))xb2=input("请输入第2位学生性别:")sg2=float(input("请输入第2位学生身高(米):"))if xb1==xb2 and sg1>sg2: s=xm1+" "+xm2elif xb1==xb2 and sg1<=sg2: s=xm2+" "+xm1elif xb1=="女": s=xm1+" "+xm2else: s=xm2+" "+xm1print("两位同学座位依次是:",s)根据上述算法实现的功能,用嵌套的选择结构描述的流程图如图所示,(1)将流程图中①②处补充完整。①__________________________________________________________②__________________________________________________________(2)根据流程图,将方框内代码用嵌套的选择结构实现相应功能,并写出Python语句块。答案 (1)①sg1>sg2 ②xb1=="女" (2) if xb1==xb2: if sg1>sg2: s=xm1+" "+xm2 else: s=xm2+" "+xm1 else: if xb1=="女": s=xm1+" "+xm2 else: s=xm2+" "+xm1解析 (1)程序功能:相同性别按身高从高到低排列,不同性别女生排在前面,男生排在后面。当条件xb1==xb2成立时,表示是相同性别,则进行身高的比较,因此①处为sg1>sg2 当条件不成立时,女生优先,因此②处为xb1=="女" (2)先用一个判断结构来区分是否相同的性别,在一个分支中嵌套另一个分支。(共86张PPT)课时4 分支结构及程序实现第三章 算法的程序实现1.理解分支结构的执行过程。2.掌握分支结构的三种if语句格式的使用。3.能根据实际问题选用合适的分支结构来解决。目 录CONTENTS知识梳理01例题精析02随堂检测03巩固与提升04知识梳理11.选择结构通过判断某些特定条件是否满足来决定下一步的执行流程,常见的有单分支选择结构、双分支选择结构、________选择结构。2.一个选择结构是一个语句块,块内的语句一般缩进4个空格。在Python中对缩进有严格要求,可以根据缩进来判断语句的从属关系。3.选择语句条件表达式结果的数据类型是________,值只有__________和____________两个。多分支逻辑型TrueFalse4.算法进行程序实现时,分支结构可用if语句来实现。if语句一般格式是:(1)单分支选择结构if <条件>:<语句块1>(2)双分支选择结构if<条件>:<语句块1>else:<语句块2>(3)多分支选择结构if <条件1>:<语句块1>elif <条件2>:<语句块2>…elif <条件N>:<语句块N>else:<语句块N+1>①语句块是一行或放在一起的多行语句,一般通过行缩进来标识if、else、elif下方的语句块必须采用相同的缩进。②分支结构的条件只判断一次,符合条件的语句块也只执行一次。例题精析2例1 调查发现人们更倾向于选择数字对称的车牌号,如车牌号“浙H64M46”。于是小石编写了一个判断车牌号是否对称的代码,Python程序如下:cp=input("请输入车牌号(格式如“浙H64M46”):")s1=cp[2:4]s2=① if② : print("不是对称车牌")else: print("是对称车牌")D为实现功能,划线处代码应为 ( )A.①cp[6:5:-1] ②s1==s2B.①cp[5:] ②s1!=s2C.①cp[5:6] ②s1==s2D.①cp[:-3:-1] ②s1!=s2解析 本题考查字符串的切片。语句s1=cp[2:4]取字符串中索引位置2和3的字符。若要对称,则对应取cp索引位置为6和5的值。A选项索引位置5取不到。B选项不能正向取。C选项只能取一个字符。D选项当步长为负值时,第一个参数默认为-1,即字符串cp中最后一个索引位置,-3是取不到的,只能取了倒数第2个。变式训练1 有下列Python程序段:import randoms=input("请输入字符串:")x=random.randint(3,6) #产生一个[3,6]之间的随机整数n=len(s)if len(s[0:x]) r=s[x:n]+s[0:x]else: r=s[0:x]+s[x:n]print(r)解析 本题综合考查了random模块函数的应用及分支结构及字符串的切片。x为采用random模块产生的[3,6]之间的随机整数,按照题意输入helloworld后n的值为10,带入if的条件表达式可得,执行第一个分支(将索引值x前面的字符后置)的条件为x<5,推得执行第二个分支(不改变字符顺序)的条件为x>=5,通过对选项的处理可知A选项中hel后置,x的值为3,可行;B选项hell后置,x的值为4,符合条件,可行;C选项不改变顺序,x>=5,可行;D选项hello后置,可得x=5,而x=5时应执行第二个分支的语句。D例2 用Python算法控制结构描述“您所在街道25分钟后小雨,50分钟后雨停”,设t为距离天气预报发布时间的间隔(单位:分钟),下列选项正确的是 ( )A解析 本题考查选择结构。根据时间t,分成三个阶段。t<=25没有任何操作,25和50之间是小雨,50之后是雨停。B选项只能表示两种情况。C选项把t<=25归结为雨停。D选项若t>50,肯定满足条件t>25,因此只能表示一种情况。变式训练2 某市“一户一表”水费单价标准如下:第一档次:每户每月不超过17立方米的用水量,供水价格为2.4元/立方米;第二档次:每户每月17立方米(不含)到30立方米(含)的用水量,供水价格比第一档提高0.5倍;第三档次:每户每月超过30立方米的用水量,供水价格比第一档提高2倍。根据水费单价标准,用Python算法控制结构描述“第二、三档次的供水价格”。设volumn为某个月的用水量,price为供水价格初始值为2.4(单位;元/立方米),下列选项正确的是 ( )BA.if volumn<=30: price=price*1.5 else: price=price*3B.if volumn>30: price=price*3elif volumn>17: price=price*1.5C.if volumn<30: price=price*1.5 else: price=price*3D.if volumn>=30: price=price*3elif volumn>=17: price=price*1.5解析 本题考查选择算法结构。根据题目含义,将水价分为三个档次,其中第一个档次是原价。A选项不能区分第一档次和第二档次。B选项price为供水价格初始值为2.4,选择结构中有两种情况,符合题意。C选项当volumn小于30,包含第一二档。D选项的临界值不成立。例3 象限是平面直角坐标系(笛卡尔坐标系)中横轴和纵轴所划分的四个区域,每一个区域叫做一个象限。象限以原点为中心,x,y 轴为分界线,原点和坐标轴上的点不属于任何象限。某同学根据输入的坐标点(x,y)来判断该坐标点的位置所在,以下实现该分类的 Python 程序段中正确的是 ( )A.if x==0 and y==0: result="原点"if x==0 or y==0: result="数轴"if x!=0 and y!=0: result="象限"DB.if x==0 or y==0: result="数轴"if x==0 and y==0: result="原点"else: result="象限"C.if x!=0 and y!=0: result="象限"if x==0 or y==0: result="数轴"else: result="原点"D.if x!=0 and y!=0: result="象限"if x==0 or y==0: result="数轴"if x==0 and y==0: result="原点"解析 本题考查Python基本控制结构。 (0,0)是原点,即 if x==0 and y==0 表示原点;(0,y)或者(x,0)分别表示 y 轴与 x 轴。A 选项,x==y==0 时,第 1 个和第 2 个 if 均成立。B选项if x==0 or y==0 且 x 与 y 不同时为 0 表示数轴,在第2个分支语句中,再次判断为"象限"。C选项条件x!=0 and y!=0成立,判断为"象限",在第2个分支语句中,再次判断为"原点",因此原点的判断需在数轴之前。 D选项分三种情况,用3条分支语句来表达这种情况。变式训练3 BMI与身体状况关系如图所示ABMI<18 18≤BMI≤24 BMI>24偏瘦 正常 偏胖A.Y = "偏瘦" if X>=18: Y = "正常" elif X>24: Y = "偏胖"B.Y="偏胖" if X<18: Y = "偏瘦" elif X<=24: Y = "正常"C.if X>24: Y = "偏胖" elif X>=18: Y = "正常"else: Y = "偏瘦"D.if 18<=X<=24: Y = "正常" else: Y = "偏瘦" if X>18: Y = "偏胖"解析 本题考查 Python分支结构基本语法。A 选项只要变量 X 的值大于等于 18,输出结果均为“偏胖”,与题干要求不符。例4 正整数n若是它平方数的尾部部分若与该正整数n相等,则称n为同构数。判断一个两位数n是否是同构数。为实现上述功能,请在划线处填入合适的语句。n=int(input("输入一个正整数"))if : print('是同构数')else: print('不是同构数')答案 n**2%100==n解析 本题考查的是选择结构的条件和取余运算符的应用。选择结构要选择合适的条件判断,n是它平方数的尾部,n平方数的后两位数为n**2%100。变式训练4 判断当前计算得到验证码变量yzm(整型)与商品识别条码s(字符串型)第13位是否相等,为实现上述功能,请在程序划线处填入合适的语句。s="3203225155569"if : print("验证通过")else: print("验证不通过")答案 yzm==int(s[12])解析 条件为计算结果与最后一位字符相同。但要注意类型的匹配,前者是数字,后者是字符串。例5 输入一个身份证号码s(字符串型),如果他的第17位是奇数,表示该公民的性别为男性,否则为女性。为实现上述功能,请在程序划线处填入合适的语句。s="330522********5115"if : print("女性")else: print("男性")答案 int(s[16])%2==0或int(s[16])%2 !=1解析 取出身份证号码s的第17位的值为文本,不能用于算术运算。判断是否是奇数的条件是除以2后的余数是否为0。变式训练5 输入一个正整数n,判断它是否是一个完全平方数,若是则输出“Yes”,否则输出“No”。为实现上述功能,请在划线处填入合适的语句。n=int(input('please input n:'))if : print('Yes')else: print('No')答案 int(pow(n,0.5))**2==n或int(n**0.5)**2==n解析 如果n的算术平方根取整后再平方等于原数n,则n为完全平方数,否则不是。求算术平方根可用pow函数或**运算实现,因此,判断条件可写为int(pow(n,0.5))**2==n或int(n**0.5)**2==n。例6 若三条线段的长度分别为a、b、c,判断他们是否能构成三角形(任意两边之和大于第三边)。为实现上述功能,请在程序划线处填入合适的语句。a=float(input('please input a:'))b=float(input('please input b:'))c=float(input('please input c:'))if : print('能构成三角形')else: print('不能构成三角形')答案 (a+b)>c and (b+c)>a and (a+c)>b或a+b>c and a+c>b and b+c>a解析 本题考查的知识点是选择结构的多条件表达式。需注意的是:任意两边有几种可能性,他们之间是且还是或的关系。变式训练6 输入一个密码psd,若密码的长度小于6位,则提示“密码长度不能少于6位!”,否则提示“OK!”。为实现上述功能,请在程序划线处填入合适的代码。psd=input('Please input password:')if : print("OK!")else: print("密码长度不能少于6位!")答案 len(psd)>=6解析 本题考查的知识点是选择结构的条件和Len函数的应用。条件是密码长度大于等于6,因此填入的代码为len(psd)>=6。例7 用计算机模拟一个猜商品价格的游戏,首先计算机随机产生一个[20,60]之间的整数x作为商品的价格,用户输入价格,若猜中了,提示“恭喜你猜中了!”,所猜价格与x的差值在5元之内,提示“加油,答案很接近!”,高于5元,提示“你猜得太高或太低了!”。程序代码如下所示,请在程序划线处填入合适的代码:# 计算机随机产生一个[20,60]之间的整数x,并赋于变量shpjg,代码省略jg=int(input("输入你猜的价格:"))if ① : print("恭喜你猜中了!")elif ② : print("你猜得太高或太低了!")else: print("加油,答案很接近!")答案 ①jg==shpjg ②abs(jg-shpjg)>=5解析 本题考查的是多分支if语句。根据题意与代码可知,①处的判断条件是输入价格与原来价格是否相等,因此,①处代码为jg==shpjg;②处为所猜价格与真实价格的距离在5元以外,因此,②处代码为abs(jg-shpjg)>=5。变式训练7 某旅游景点规定,身高在1.2米以下的儿童免费,身高在1.2及米上,但不超过1.5米的儿童购买半价票,身高超过1.5米的游客购买全价票。实现上述功能的程序如下,请在程序划线处填入合适的代码。h=float(input('请输入身高(单位米):'))if① : print('免费')elif② : print('请购买半价票')else: print('请购买全价票')答案 ①h<1.2 ②h<=1.5解析 本题考查的是多分支if语句。根据题意可知,本题的分支结构条件分别是:h<1.2,1.2<=h<=1.5。因此,①处应填入的代码为h<1.2;②处条件为1.2<=h<=1.5,但elif条件隐含着h>=1.2的条件,因此②处应填入的代码为h<=1.5。变式训练8 用Python语言编写一个程序,实现如下功能:输入某一学生的性别、身高和体重,计算该生的BMI指数并分析其体型情况,得到其体重指数分数,然后输出。体质指数(BMI)=体重(kg)÷身高(m)2(如:70kg÷(1.75m)2=22.86)等级 体重指数分数 男 女偏瘦 80 ≤16.4 ≤16.4标准 100 16.5~23.2 16.5~22.7超重 80 23.3~26.3 22.8~25.2肥胖 60 ≥26.4 ≥25.3编写的程序代码如下,将划线处填写完整。xb=input("输入性别:")sg=float(input("输入身高(单位:m):"))tz=float(input("输入体重(单位:kg):"))① #计算BMI的值,并四舍五入保留两位小数 print("bmi值为:",bmi)if bmi<=16.4: bmizx= 1elif xb=="男" and bmi<=23.2 or xb=="女" and bmi<=22.7: bmizx= 2elif xb=="男" and bmi<=26.3 or xb=="女" and bmi<=25.2: bmizx= 3② : bmizx= 4bz={1:"偏瘦",2:"标准",3:"超重",4:"肥胖"}print("你的体型属于",③ ) 答案 ①bmi=round(tz/sg**2,2) ②else ③bz[bmizx]解析 本题考查多分支选择结构。①根据体质指数(BMI)的计算公式并用round函数保留小数。②除了以上条件外,其余均为肥胖,因此为else。③体型的标准和情况保存在字典bz中,因此按键查找值。随堂检测31.有如下Python程序段:a=[2,3,5,6,9]x=min(a);y=max(a);ans=a[1]if x**2>y: ans=ans+x**2 ans=ans∥2else: ans=ans+y ans=ans%yprint(ans)D执行该程序段后,输出的内容是 ( )A.6 B.5 C.4 D.32.有如下 Python 程序段:# 输入 3 个整数分别存储到变量 a、b、c 中,代码略if a > b and a > c: maxn = aelif b > a and b > c: maxn = belif c > a and c > b: maxn = cprint("a,b,c 的最大值为:", maxn)执行该程序段,输入下列 4 组测试数据,无法正确输出 a、b、c 的最大值的是( )A.10,20,30 B.20,30,10C.30,10,10 D.10,10,10D3.以下程序实现与计算机玩“石头剪刀布”的游戏(分别用0,1,2代表石头、剪刀、布),游戏规则为:石头赢剪刀、剪刀赢布、布赢石头。代码如下:import randompc=random.randint(0,2)player=int(input("请输入石头(0)、剪刀(1)、布(2):"))if① print("你赢了,恭喜!")elif player==pc: print("平手")else: print("你输了,再接再厉!")D解决该问题,上述程序①处填入语句正确的是 ( )A.pc>playerB.pcC.pc-player==1 and player-pc==2D.pc-player==1 or player-pc==2解析 本题考查多分支选择结构。你赢的可能性有3种,一是石头对剪刀,二是布对石头,三是剪刀对布,其中前2种可能中,pc-player==1,第3种可能性中,player-pc==2。4.某Python代码如下,执行后输出的结果是 ( )L=['pear','apple','orange']n=len(L[2])ans=3if n%2==0: ans*=nelse: ans+=nans-=5print(ans)A.13 B.3 C.18 D.8A解析 本题考查Python列表的切片和分支结构。L[2]为'orange',因此n=len(L[2])值为6,符合分支语句的第一个条件,执行if对应的语句块,此时ans的值为18,再执行ans-=5后ans的值为13,并且输出。5.用Python 算法描述鱼缸水温预警功能:当水温高于32度时, LED灯呈现“红色”;低于27度时,LED灯呈现“蓝色”;其余情况LED灯呈现“绿色”。# 通过传感器获取鱼缸内水温值,并存储到变量 t 中LED="绿色"LED="绿色"if : if t>32: LED="红色" else: LED="蓝色"print("LED 灯颜色显示:",LED)C为实现上述功能,划线处正确的 Python 表达式是 ( )A.not(27C.t<27 or t>32 D.t<27 and t>32A.if a>b: flag=True flag=FalseAB.flag=a>bC.if a>b: flag=True else: flag=FalseD.flag=False if a>b: flag=True7.有如下程序段:list1=["an","alpha","around","bee","back","cake"]leng=len(list1)if leng>6: z=list1[0]else: z=list1[leng-1]print(z)执行后,输出的结果为 。 解析 本题主要考查的是分支结构。len(list1)返回的是列表list1的长度,即leng=6,条件leng>6不满足,因此执行语句z=list1[leng-1],即取出列表中的最后一个元素,因此z="cake",print命令输出字符串内容时,不显示引号,因此输出的结果为cake,而非"cake"。答案 cake8.如图所示的流程图的功能是根据用水量求水费。回答下列问题:v=① if② : s=2.4*velif v<=30: ③ else: s=4.3*vprint(s)(1)请在程序划线处填入合适的语句。(2)结合算法和流程图分析,若输入用水量为28吨,则输出的s值将为 ,若输入用水量为100吨,则输出的s值为 。 答案 (1)①float(input("输入用水量:"))或float(input()) ②v<=17 ③s=3.35*v (2)93.8 430解析 本题主要考查的是多分支结构的程序实现。(1)v表示的是输入的用水量,水费等于用水量乘以相应的单价,因此要将输入的数转换为实数类型,因此①处语句为float(input("输入用水量:"))或float(input());根据s=2.4*v并对照流程图可知,②处条件为v<=17;根据elif v<=30可知,③处代码为s=3.35*v。(2)用水量为28吨,条件1730,因此s=4.3*100=430。9.下列选项的语句中,与“若 x 小于 0,则 y=-1,否则,y=1”功能相同的是 ( )BA.if x<0: y=-1 y=1B.y=1 if x<0 y=-1C.if x<0: y=-1 if x>0: y=1D.if x>0: y=1 else: y=-110.用Python算法控制结构描述“小李起床后20分钟后去锻炼,50分钟后锻炼结束去学校”,设t为起床后经过的时间,下列选项正确的是 ( )BA.if t>50: print("去学校") else: print("去锻炼")B.if t>50: print("去学校") elif t>20: print("去锻炼")C.if t>20 and t<50: print("去锻炼") else: print("去学校")D.if t>20: print("去锻炼") elif t>50: print("去学校")11.用Python算法控制结构描述:若水位高于10(不含)或者排水速度小于0.05(不含),发出警告。实时监测到的水位用h表示,排水速度用v表示,下列代码正确的是 ( )DA.if h>10: if v<0.05: print("警告!") else: print("正常!")B.if h<=10 or v>=0.05: print("正常!") else: print("警告!")C.if h<=10: print("正常!") elif v>=0.05: print("正常!") else: print("警告!")D.if h>10: print("警告!") elif v<0.05: print("警告!") else: print("正常!")4巩固与提升基础巩固能力提升1.使用Python编写一个输出门票价格的程序,代码如下:h=int(input("请输入您的身高:"))if h <=120: p=0elif h>140: p=100else: p=50print("您需要支付的门票价格是:",p)D要测试所有分支程序代码是否正确。以下测试数据中,最恰当的一组是 ( )A.120,140 B.130,150C.100,130,140 D.100,130,150解析 本题主要考查Python分支结构的基础概念,要测试所有分支程序代码是否正确,因为有三个分支,故三个值的取值必须在[0,120],(120,140],(140,+∞),故答案应选D。A.maxv=a if b>maxv: maxv=b if c>maxv: maxv=cD解析 本题考查分支语句if elif的相关知识。ABC选项的功能是求最大值。A选项默认a是最大值,还有两个选择结构,分别与b和c比较。B选项是多分支选择结构,如果不满足条件a>b and a>c,则a不是最大值,最大值可能是b和c。C选项是两个选择结构,先在a和b是找出最大值,接着最大值与c比较。D选项用3个选择结构来实现,但有一种情况,即a=b=c时,或最大值有2个时,不能实现找出最大值的功能。B.if a>b and a>c maxv=a elif b>c: maxv=b else: maxv=cC.if a>b maxv=a else: maxv=b if c>maxv: maxv=cD.if a>b and a>c: maxv=a if b>a and b>c; maxv=b if c>a and c>b: maxv=c3.下列Python语句中,能体现“若a大于0则b=a,和否则b=-1”表述并实现其功能的是 ( )AA.if a>0: b=a else: b=-1B.if a>0: b=a if a<0: b=-1C.b=-1 if a>0: b=aD.if a>0: b=a elif: b=-14.有如下Python程序段:a=[3,6,2.8,14,3,11]sum=a[1]+a[3]-a[5]v=sum%2if v==1: print(1-v)else: print(-1)执行该程序段,输出的结果是( )A.1 B.0 C.报错 D.-1B5.有如下Python程序:import mathtotal=float(input("请输入金额:"))if total<=500: total*=0.9elif total<=1500: total*=0.85else: total*=0.75print(math.floor(total))运行程序,输入"1024"后回车,程序的输出结果是 。答案 8706.若一个四位数,各个位数上的数字的4次幂之和等于它本身,则称这个数为四叶玫瑰数。编写Python程序,判断输入一个数是否为四叶玫瑰数。(1)四位数4326 (选填:是/不是)四叶玫瑰数。 (2)实现上述功能的Python 程序如下,请在划线处填入合适代码。number=int(input("请输入一个四位数:"))a = number∥1000b =① c = number%100∥10d = number%10if ② : print(number, "是四叶玫瑰数")else: print(number, "不是四叶玫瑰数")答案 (1)不是 (2)① number%1000∥100或number∥100%10 ②a**4+b**4+c**4+d**4==number:7.判断一个三位数i是否是水仙花数的条件是:它的各个位数字a、b、c的立方和与它本身是否相等,若相等为水仙花数,请把下列语句补充完整。a,b,c=1,5,3if : print("是水仙花数")else: print("不是水仙花数")答案 a**3+b**3+c**3==a*100+b*10+c解析 掌握数字的表达,掌握条件的表达。条件是各个数字的立方和与他本身相等,那么各个数字的立方和又该如何表达。8.输出某个温度范围内(从低温t1到高温t2)气体的密度变化情况,输入温度t1和t2,要保证温度t1低于温度t2,把下列语句补充完整。t1,t2=4,3if : t=t1;t1=t2;t2=t答案 t1>t2解析 本题考查的知识点是选择结构的条件和交换语句的应用。从三条语句t=t1;t1=t2;t2=t来看,是要交换t1和t2的值,根据题目的要求,从低温t1到高温t2,因此若t1比t2大时,需要交换两者。9.每周星期一,杭州本地牌照尾号为1和9的汽车是限行的,在汽车牌照本中取得最后一个数字ch(字符串型),判断该车星期一是否限行,请把下列语句补充完整。pz="浙APW559"if : print("限行")else: print("不限行")答案 pz[-1]=="1" or pz[-1]=="9"或者int(pz[-1])==1 or int(pz[-1])==9解析 两个条件满足一个就可以了,但要注意数据类型。10.输入一元二次方程系数a、b、c,输出方程根的情况。请把下列语句补充完整。a=int(input("a="))b=int(input("b="))c=int(input("c="))d=① if a==0: print("一元二次方程a不能为零!")elif② : print("方程有一个根")elif d>0: print("方程有两个根")else: print("方程没有根")答案 ①b**2-4*a*c ②d==0解析 根据d的值来判断是否有根,执行语句中已经提示“a不能为零”和“方程有一个根”。11.输入一个字符串s,判断字符串s中第i个字符的类型,类型分为4种:大写字母、小写字母、阿拉伯数字、其他字符。请回答下列问题。s=input("please string:")i=3① tot=['其他字符','大写字母','小写字母','阿拉伯数字']t=0if ch>='A' and ch<="Z": t=1elif ch>='a' and ch<="z":t=2elif ② :#如果是数字 t=3print('当前字符的类型为:',③ ) (1)请在程序划线处填入合适的代码。(2)运行当前程序,输入s的内容为“Lm@”,则所属类型对应的列表元素为 。 答案 (1)①ch=s[i-1] 或ch=s[2]②ch>='0' and ch<='9'或'9'>=ch>='0'③tot[t](2)tot[0]解析 本题考查的是多分支语句。字符串中第i个字符,则在字符串中的索引号为i-1,因此①中代码为ch=s[i-1],因为i=3,因此也可以写为ch=s[2];②处语句的功能是判断当前字符是否为数字,因此代码为ch>='0' and ch<='9',也可写为'9'>=ch>='0';变量t对应当前字符所属的类型,因此,③处代码为tot[t]。(2)运行当前程序,输入s的内容为“Lm@”,则第3个字符为“@”,属于其他字符类,因此对应的列表元素为tot[0]。12.设计一个程序,根据输入的劳务报酬收入计算劳务报酬所得税。解决此问题的流程图如图所示。编写的Python程序代码如下所示,请在划线处填入合适的代码。x=int(input("请输入劳务费"))if x<0 or x>1000000: print("请检查输入的数据")else: if x<=800: y=0 elif① : y=(x-800)*0.2 else: ② print("应交税收"+③ ) 答案 ①x<=4000 ②y=x*0.16 ③str(y)解析 在多分支选择结构中,每个分支逐一匹配,在第二个分支中,已经不满足x<=800,即所有的x均大于800,因此只需要说明他小于4000即可。13.COD(化学需氧量)是衡量水质污染程度的重要指标之一,污水处理时根据污水的COD指标来计算COD去除剂的投放量。当COD指标x小于50时,剂量为10,指标大于等于50且小于等于500时,剂量为1.2x/5,指标超过500时,剂量为1.5x/4。运行程序后,输入COD指标,输出计算结果。为实现上述功能,请在划线处填入合适的代码。x=int(input("请输入COD指标x"))if x<50: y=10① : y=1.2*x/5else: ② print("所需剂量为"+str(y))答案 ①elif x<=500 ②y=1.5*x/4解析 注意多分支选择结构的书写格式。14.模拟一个简单计算器,输入两个数和一个运算符(加、减、乘、除),进行算术运算,并输出运算结果。程序运行时,先后输入第一个数、运算符和第二个数,输出运算结果。当输入的运算符不是加、减、乘、除四种运算符时,则输出“运算符不正确”;当进行除法运算时,如果除数为0,提示输出“除数不能为零”。为实现上述功能,请在划线处填入合适的代码。x=int(input("请输入第1个数"))ch=input("请输入运算符")y=int(input("请输入第2个数"))flag=Falses="+-*/"if ch in s: flag=True if ch=="+": z=x+y elif ch=="-": z=x-y elif ch=="*": z=x*y else: if① : print("除数不能为0!") flag=False else: z=x/yif② : print("运算的结果为:"+str(z))else: print("运算符不正确")答案 ①y==0 ②flag或flag==True解析 提示"除数不能为0!",因此应填写当y等于0时的情况。由于y=0时,已经输出了内容,此时flag=False,因此只有当flag==True时才有输出。15.编写Python程序,实现如下功能:输入AQI指数,输出该AQI值所对应的空气质量等级及空气状况。程序运行效果如图所示。AQI指数所对应的空气质量等级及空气状况如表所示:请输入AQI指数值:220空气质量等级为:V 空气状况为:重度污染AQI指数 0-50 51-100 101-150 151-200 201-300 >300等级 Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ空气状况 优 良 轻度污染 中度污染 重度污染 严重污染实现上述功能的程序如下。st="Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ"aqi=float(input("请输入AQI指数值:"))if aqi<=50: ss="优" dj=1elif aqi<=100: ss="良" dj=2elif① : ss="轻度污染" dj=3elif aqi<=200: ss="中度污染" dj=4elif aqi<=300: ss="重度污染" dj=5else: ss="严重污染" dj=6② print("空气质量等级为:"+skydd,"空气状况为:"+ss)(1)程序运行时,输入200,则屏幕上显示的内容为 。 (2)请在程序划线处填入合适的代码。答案 (1)空气质量等级为:Ⅳ,空气状况为:中度污染 (2)①aqi<=150 ②skydd=st[dj-1]解析 本题主要考查的是多分支结构。(1)aqi=200时,对应的等级为Ⅳ,属于中度污染,因此屏幕上显示的内容为“空气质量等级为:Ⅳ,空气状况为:中度污染”。(2)①处空气状况为“轻度污染”,因此条件为aqi<=150;空气质量等级存储在字符串skydd中,字符串的第一个字符的索引号为0,因此②处代码为skydd=st[dj-1]。16.现有编号为"Xs001"、"Xs002"的两位学生,分别输入他们的性别和身高,按一定的规则进行排列,输出排列后的座位信息,实现该功能的程序代码如下:xm1="Xs001"xm2="Xs002"xb1=input("请输入第1位学生性别:")sg1=float(input("请输入第1位学生身高(米):"))xb2=input("请输入第2位学生性别:")sg2=float(input("请输入第2位学生身高(米):"))print("两位同学座位依次是:",s)if xb1==xb2 and sg1>sg2: s=xm1+" "+xm2elif xb1==xb2 and sg1<=sg2: s=xm2+" "+xm1elif xb1=="女": s=xm1+" "+xm2else: s=xm2+" "+xm1根据上述算法实现的功能,用嵌套的选择结构描述的流程图如图所示,(1)将流程图中①②处补充完整。①_______________________________________②_______________________________________(2)根据流程图,将方框内代码用嵌套的选择结构实现相应功能,并写出Python语句块。答案 (1)①sg1>sg2 ②xb1=="女" (2) if xb1==xb2: if sg1>sg2: s=xm1+" "+xm2 else: s=xm2+" "+xm1 else: if xb1=="女": s=xm1+" "+xm2 else: s=xm2+" "+xm1解析 (1)程序功能:相同性别按身高从高到低排列,不同性别女生排在前面,男生排在后面。当条件xb1==xb2成立时,表示是相同性别,则进行身高的比较,因此①处为sg1>sg2 当条件不成立时,女生优先,因此②处为xb1=="女" (2)先用一个判断结构来区分是否相同的性别,在一个分支中嵌套另一个分支。课时4 分支结构及程序实现课时目标1.理解分支结构的执行过程。2.掌握分支结构的三种if语句格式的使用。3.能根据实际问题选用合适的分支结构来解决。1.选择结构通过判断某些特定条件是否满足来决定下一步的执行流程,常见的有单分支选择结构、双分支选择结构、________选择结构。2.一个选择结构是一个语句块,块内的语句一般缩进4个空格。在Python中对缩进有严格要求,可以根据缩进来判断语句的从属关系。3.选择语句条件表达式结果的数据类型是________,值只有________和________两个。4.算法进行程序实现时,分支结构可用if语句来实现。if语句一般格式是:(1)单分支选择结构if 〈条件〉:〈语句块1〉(2)双分支选择结构if 〈条件〉:〈语句块1〉else:〈语句块2〉(3)多分支选择结构if 〈条件1〉:〈语句块1〉elif 〈条件2〉:〈语句块2〉…elif 〈条件N〉:〈语句块N〉else:〈语句块N+1〉①语句块是一行或放在一起的多行语句,一般通过行缩进来标识if、else、elif下方的语句块必须采用相同的缩进。②分支结构的条件只判断一次,符合条件的语句块也只执行一次。 例1 调查发现人们更倾向于选择数字对称的车牌号,如车牌号“浙H64M46”。于是小石编写了一个判断车牌号是否对称的代码,Python程序如下:cp=input(″请输入车牌号(格式如“浙H64M46”):″)s1=cp[2:4]s2=①____if②____:print(″不是对称车牌″)else:print(″是对称车牌″)为实现功能,划线处代码应为( )A.①cp[6:5:-1] ②s1==s2B.①cp[5:] ②s1!=s2C.①cp[5:6] ②s1==s2D.①cp[:-3:-1] ②s1!=s2听课笔记: 变式训练1 有下列Python程序段:import randoms=input(″请输入字符串:″)x=random.randint(3,6) #产生一个[3,6]之间的随机整数n=len(s)if len(s[0:x])r=s[x:n]+s[0:x]else:r=s[0:x]+s[x:n]print(r)执行该程序段,若输入“helloworld”(不包含双引号),则输出的结果不可能的是( )A.loworldhel B.oworldhellC.helloworld D.worldhello例2 用Python算法控制结构描述“您所在街道25分钟后小雨,50分钟后雨停”,设t为距离天气预报发布时间的间隔(单位:分钟),下列选项正确的是( )A.if t>50: print(″雨停″) elif t>25: print(″小雨″)B.if t>50: print(″雨停″) else: print(″小雨″)C.if t>25 and t<=50: print(″小雨″) else: print(″雨停″)D.if t>25: print(″小雨″) elif t>50: print(″雨停″)听课笔记: 变式训练2 某市“一户一表”水费单价标准如下:第一档次:每户每月不超过17立方米的用水量,供水价格为2.4元/立方米;第二档次:每户每月17立方米(不含)到30立方米(含)的用水量,供水价格比第一档提高0.5倍;第三档次:每户每月超过30立方米的用水量,供水价格比第一档提高2倍。根据水费单价标准,用Python算法控制结构描述“第二、三档次的供水价格”。设volumn为某个月的用水量,price为供水价格初始值为2.4(单位;元/立方米),下列选项正确的是( )A.if volumn<=30: price=price*1.5 else: price=price*3B.if volumn>30: price=price*3 elif volumn>17: price=price*1.5C.if volumn<30: price=price*1.5 else: price=price*3D.if volumn>=30: price=price*3 elif volumn>=17: price=price*1.5例3 象限是平面直角坐标系(笛卡尔坐标系)中横轴和纵轴所划分的四个区域,每一个区域叫做一个象限。象限以原点为中心,x,y 轴为分界线,原点和坐标轴上的点不属于任何象限。某同学根据输入的坐标点(x,y)来判断该坐标点的位置所在,以下实现该分类的 Python 程序段中正确的是( )A.if x==0 and y==0: result=″原点″ if x==0 or y==0: result=″数轴″ if x!=0 and y!=0: result=″象限″B.if x==0 or y==0: result=″数轴″ if x==0 and y==0: result=″原点″ else: result=″象限″C.if x!=0 and y!=0: result=″象限″ if x==0 or y==0: result=″数轴″ else: result=″原点″D.if x!=0 and y!=0: result=″象限″ if x==0 or y==0: result=″数轴″ if x==0 and y==0: result=″原点″听课笔记: 变式训练3 BMI与身体状况关系如图所示BMI<18 18≤BMI≤24 BMI>24偏瘦 正常 偏胖已知某同学的BMI值存储在变量X中,小蓝编写程序判断该同学的身体状况信息,并保存到变量Y中,则下列程序段无法实现该功能的是( )A.Y = "偏瘦" if X>=18: Y = "正常" elif X>24: Y = "偏胖"B.Y="偏胖" if X<18: Y = "偏瘦" elif X<=24: Y = "正常"C.if X>24: Y = "偏胖" elif X>=18: Y = "正常"else: Y = "偏瘦"D.if 18<=X<=24: Y = "正常" else: Y = "偏瘦" if X>18: Y = "偏胖"例4 正整数n若是它平方数的尾部部分若与该正整数n相等,则称n为同构数。判断一个两位数n是否是同构数。为实现上述功能,请在划线处填入合适的语句。n=int(input(″输入一个正整数″))if________: print('是同构数')else: print('不是同构数')听课笔记: 变式训练4 判断当前计算得到验证码变量yzm(整型)与商品识别条码s(字符串型)第13位是否相等,为实现上述功能,请在程序划线处填入合适的语句。s=″3203225155569″if____________: print(″验证通过″)else: print(″验证不通过″)例5 输入一个身份证号码s(字符串型),如果他的第17位是奇数,表示该公民的性别为男性,否则为女性。为实现上述功能,请在程序划线处填入合适的语句。s=″330522********5115″if________: print(″女性″)else: print(″男性″)听课笔记: 变式训练5 输入一个正整数n,判断它是否是一个完全平方数,若是则输出“Yes”,否则输出“No”。为实现上述功能,请在划线处填入合适的语句。n=int(input('please input n:'))if________: print('Yes')else: print('No')例6 若三条线段的长度分别为a、b、c,判断他们是否能构成三角形(任意两边之和大于第三边)。为实现上述功能,请在程序划线处填入合适的语句。a=float(input('please input a:'))b=float(input('please input b:'))c=float(input('please input c:'))if________________: print('能构成三角形')else: print('不能构成三角形')听课笔记: 变式训练6 输入一个密码psd,若密码的长度小于6位,则提示“密码长度不能少于6位!”,否则提示“OK!”。为实现上述功能,请在程序划线处填入合适的代码。psd=input('Please input password:')if____________: print(″OK!″)else: print(″密码长度不能少于6位!″)例7 用计算机模拟一个猜商品价格的游戏,首先计算机随机产生一个[20,60]之间的整数x作为商品的价格,用户输入价格,若猜中了,提示“恭喜你猜中了!”,所猜价格与x的差值在5元之内,提示“加油,答案很接近!”,高于5元,提示“你猜得太高或太低了!”。程序代码如下所示,请在程序划线处填入合适的代码:# 计算机随机产生一个[20,60]之间的整数x,并赋于变量shpjg,代码省略jg=int(input(″输入你猜的价格:″))if①____________: print(″恭喜你猜中了!″)elif②____________: print(″你猜得太高或太低了!″)else: print(″加油,答案很接近!″)听课笔记: 变式训练7 某旅游景点规定,身高在1.2米以下的儿童免费,身高在1.2及米上,但不超过1.5米的儿童购买半价票,身高超过1.5米的游客购买全价票。实现上述功能的程序如下,请在程序划线处填入合适的代码。h=float(input('请输入身高(单位米):'))if①____________: print('免费')elif②____________: print('请购买半价票')else: print('请购买全价票')变式训练8 用Python语言编写一个程序,实现如下功能:输入某一学生的性别、身高和体重,计算该生的BMI指数并分析其体型情况,得到其体重指数分数,然后输出。体质指数(BMI)=体重(kg)÷身高(m)2(如:70kg÷(1.75m)2=22.86)等级 体重指数分数 男 女偏瘦 80 ≤16.4 ≤16.4标准 100 16.5~23.2 16.5~22.7超重 80 23.3~26.3 22.8~25.2肥胖 60 ≥26.4 ≥25.3编写的程序代码如下,将划线处填写完整。xb=input(″输入性别:″)sg=float(input(″输入身高(单位:m):″))tz=float(input(″输入体重(单位:kg):″))①________ #计算BMI的值,并四舍五入保留两位小数print(″bmi值为:″,bmi)if bmi<=16.4: bmizx= 1elif xb==″男″ and bmi<=23.2 or xb==″女″ and bmi<=22.7: bmizx= 2elif xb==″男″ and bmi<=26.3 or xb==″女″ and bmi<=25.2: bmizx= 3②________: bmizx= 4bz={1:″偏瘦″,2:″标准″,3:″超重″,4:″肥胖″}print(″你的体型属于″,③________)1.有如下Python程序段:a=[2,3,5,6,9]x=min(a);y=max(a);ans=a[1]if x**2>y: ans=ans+x**2 ans=ans∥2else: ans=ans+y ans=ans%yprint(ans)执行该程序段后,输出的内容是 ( )A.6 B.5 C.4 D.32.有如下 Python 程序段:# 输入 3 个整数分别存储到变量 a、b、c 中,代码略if a > b and a > c: maxn = aelif b > a and b > c: maxn = belif c > a and c > b: maxn = cprint("a,b,c 的最大值为:", maxn)执行该程序段,输入下列 4 组测试数据,无法正确输出 a、b、c 的最大值的是A.10,20,30 B.20,30,10C.30,10,10 D.10,10,103.以下程序实现与计算机玩“石头剪刀布”的游戏(分别用0,1,2代表石头、剪刀、布),游戏规则为:石头赢剪刀、剪刀赢布、布赢石头。代码如下:import randompc=random.randint(0,2)player=int(input("请输入石头(0)、剪刀(1)、布(2):"))if① print("你赢了,恭喜!")elif player==pc: print("平手")else: print("你输了,再接再厉!")解决该问题,上述程序①处填入语句正确的是 ( )A.pc>playerB.pcC.pc-player==1 and player-pc==2D.pc-player==1 or player-pc==24.某Python代码如下,执行后输出的结果是 ( )L=['pear','apple','orange']n=len(L[2])ans=3if n%2==0: ans*=nelse: ans+=nans-=5print(ans)A.13 B.3 C.18 D.85.用Python 算法描述鱼缸水温预警功能:当水温高于32度时, LED灯呈现“红色”;低于27度时,LED灯呈现“蓝色”;其余情况LED灯呈现“绿色”。# 通过传感器获取鱼缸内水温值,并存储到变量 t 中LED="绿色"LED="绿色"if : if t>32: LED="红色" else: LED="蓝色"print("LED 灯颜色显示:",LED)为实现上述功能,划线处正确的 Python 表达式是 ( )A.not(27C.t<27 or t>32 D.t<27 and t>326.下列选项中,对变量flag的赋值与其它三项不等价的是 ( )A.if a>b: flag=True flag=FalseB.flag=a>bC.if a>b: flag=True else: flag=FalseD.flag=False if a>b: flag=True7.有如下程序段:list1=["an","alpha","around","bee","back","cake"]leng=len(list1)if leng>6: z=list1[0]else: z=list1[leng-1]print(z)执行后,输出的结果为 。 8.如图所示的流程图的功能是根据用水量求水费。回答下列问题:v=① if② : s=2.4*velif v<=30: ③ else: s=4.3*vprint(s)(1)请在程序划线处填入合适的语句。(2)结合算法和流程图分析,若输入用水量为28吨,则输出的s值将为 ,若输入用水量为100吨,则输出的s值为 。 9.下列选项的语句中,与“若 x 小于 0,则 y=-1,否则,y=1”功能相同的是 ( )A.if x<0: y=-1 y=1B.y=1 if x<0 y=-1C.if x<0: y=-1 if x>0: y=1D.if x>0: y=1 else: y=-110.用Python算法控制结构描述“小李起床后20分钟后去锻炼,50分钟后锻炼结束去学校”,设t为起床后经过的时间,下列选项正确的是 ( )A.if t>50: print("去学校") else: print("去锻炼")B.if t>50: print("去学校") elif t>20: print("去锻炼")C.if t>20 and t<50: print("去锻炼") else: print("去学校")D.if t>20: print("去锻炼") elif t>50: print("去学校")11.用Python算法控制结构描述:若水位高于10(不含)或者排水速度小于0.05(不含),发出警告。实时监测到的水位用h表示,排水速度用v表示,下列代码正确的是 ( )A.if h>10: if v<0.05: print("警告!") else: print("正常!")B.if h<=10 or v>=0.05: print("正常!") else: print("警告!")C.if h<=10: print("正常!") elif v>=0.05: print("正常!") else: print("警告!")D.if h>10: print("警告!") elif v<0.05: print("警告!") else: print("正常!") 展开更多...... 收起↑ 资源列表 课时4 分支结构及程序实现 学案 浙教版(2019)必修1.doc 课时4 分支结构及程序实现 教案 浙教版(2019)必修1.doc 课时4 分支结构及程序实现 课件(共86张ppt)浙教版(2019)必修1.pptx