資源簡介 課時(shí)4 分支結(jié)構(gòu)及程序?qū)崿F(xiàn)課時(shí)目標(biāo)1.理解分支結(jié)構(gòu)的執(zhí)行過程。2.掌握分支結(jié)構(gòu)的三種if語句格式的使用。3.能根據(jù)實(shí)際問題選用合適的分支結(jié)構(gòu)來解決。1.選擇結(jié)構(gòu)通過判斷某些特定條件是否滿足來決定下一步的執(zhí)行流程,常見的有單分支選擇結(jié)構(gòu)、雙分支選擇結(jié)構(gòu)、多分支選擇結(jié)構(gòu)。2.一個選擇結(jié)構(gòu)是一個語句塊,塊內(nèi)的語句一般縮進(jìn)4個空格。在Python中對縮進(jìn)有嚴(yán)格要求,可以根據(jù)縮進(jìn)來判斷語句的從屬關(guān)系。3.選擇語句條件表達(dá)式結(jié)果的數(shù)據(jù)類型是邏輯型,值只有True和False兩個。4.算法進(jìn)行程序?qū)崿F(xiàn)時(shí),分支結(jié)構(gòu)可用if語句來實(shí)現(xiàn)。if語句一般格式是:(1)單分支選擇結(jié)構(gòu)if <條件>:<語句塊1>(2)雙分支選擇結(jié)構(gòu)if<條件>:<語句塊1>else:<語句塊2>(3)多分支選擇結(jié)構(gòu)if <條件1>:<語句塊1>elif <條件2>:<語句塊2>…elif <條件N>:<語句塊N>else:<語句塊N+1>①語句塊是一行或放在一起的多行語句,一般通過行縮進(jìn)來標(biāo)識if、else、elif下方的語句塊必須采用相同的縮進(jìn)。②分支結(jié)構(gòu)的條件只判斷一次,符合條件的語句塊也只執(zhí)行一次。 例1 調(diào)查發(fā)現(xiàn)人們更傾向于選擇數(shù)字對稱的車牌號,如車牌號“浙H64M46”。于是小石編寫了一個判斷車牌號是否對稱的代碼,Python程序如下:cp=input("請輸入車牌號(格式如“浙H64M46”):")s1=cp[2:4]s2=① if② : print("不是對稱車牌")else: print("是對稱車牌")為實(shí)現(xiàn)功能,劃線處代碼應(yīng)為 ( )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的字符。若要對稱,則對應(yīng)取cp索引位置為6和5的值。A選項(xiàng)索引位置5取不到。B選項(xiàng)不能正向取。C選項(xiàng)只能取一個字符。D選項(xiàng)當(dāng)步長為負(fù)值時(shí),第一個參數(shù)默認(rèn)為-1,即字符串cp中最后一個索引位置,-3是取不到的,只能取了倒數(shù)第2個。變式訓(xùn)練1 有下列Python程序段:import randoms=input("請輸入字符串:")x=random.randint(3,6) #產(chǎn)生一個[3,6]之間的隨機(jī)整數(shù)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)執(zhí)行該程序段,若輸入“helloworld”(不包含雙引號),則輸出的結(jié)果不可能的是 ( )A.loworldhel B.oworldhellC.helloworld D.worldhello答案 D解析 本題綜合考查了random模塊函數(shù)的應(yīng)用及分支結(jié)構(gòu)及字符串的切片。x為采用random模塊產(chǎn)生的[3,6]之間的隨機(jī)整數(shù),按照題意輸入helloworld后n的值為10,帶入if的條件表達(dá)式可得,執(zhí)行第一個分支(將索引值x前面的字符后置)的條件為x<5,推得執(zhí)行第二個分支(不改變字符順序)的條件為x>=5,通過對選項(xiàng)的處理可知A選項(xiàng)中hel后置,x的值為3,可行;B選項(xiàng)hell后置,x的值為4,符合條件,可行;C選項(xiàng)不改變順序,x>=5,可行;D選項(xiàng)hello后置,可得x=5,而x=5時(shí)應(yīng)執(zhí)行第二個分支的語句。例2 用Python算法控制結(jié)構(gòu)描述“您所在街道25分鐘后小雨,50分鐘后雨停”,設(shè)t為距離天氣預(yù)報(bào)發(fā)布時(shí)間的間隔(單位:分鐘),下列選項(xiàng)正確的是 ( )答案 A解析 本題考查選擇結(jié)構(gòu)。根據(jù)時(shí)間t,分成三個階段。t<=25沒有任何操作,25和50之間是小雨,50之后是雨停。B選項(xiàng)只能表示兩種情況。C選項(xiàng)把t<=25歸結(jié)為雨停。D選項(xiàng)若t>50,肯定滿足條件t>25,因此只能表示一種情況。變式訓(xùn)練2 某市“一戶一表”水費(fèi)單價(jià)標(biāo)準(zhǔn)如下:第一檔次:每戶每月不超過17立方米的用水量,供水價(jià)格為2.4元/立方米;第二檔次:每戶每月17立方米(不含)到30立方米(含)的用水量,供水價(jià)格比第一檔提高0.5倍;第三檔次:每戶每月超過30立方米的用水量,供水價(jià)格比第一檔提高2倍。根據(jù)水費(fèi)單價(jià)標(biāo)準(zhǔn),用Python算法控制結(jié)構(gòu)描述“第二、三檔次的供水價(jià)格”。設(shè)volumn為某個月的用水量,price為供水價(jià)格初始值為2.4(單位;元/立方米),下列選項(xiàng)正確的是 ( )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解析 本題考查選擇算法結(jié)構(gòu)。根據(jù)題目含義,將水價(jià)分為三個檔次,其中第一個檔次是原價(jià)。A選項(xiàng)不能區(qū)分第一檔次和第二檔次。B選項(xiàng)price為供水價(jià)格初始值為2.4,選擇結(jié)構(gòu)中有兩種情況,符合題意。C選項(xiàng)當(dāng)volumn小于30,包含第一二檔。D選項(xiàng)的臨界值不成立。例3 象限是平面直角坐標(biāo)系(笛卡爾坐標(biāo)系)中橫軸和縱軸所劃分的四個區(qū)域,每一個區(qū)域叫做一個象限。象限以原點(diǎn)為中心,x,y 軸為分界線,原點(diǎn)和坐標(biāo)軸上的點(diǎn)不屬于任何象限。某同學(xué)根據(jù)輸入的坐標(biāo)點(diǎn)(x,y)來判斷該坐標(biāo)點(diǎn)的位置所在,以下實(shí)現(xiàn)該分類的 Python 程序段中正確的是 ( )A.if x==0 and y==0: result="原點(diǎn)"if x==0 or y==0: result="數(shù)軸"if x!=0 and y!=0: result="象限"B.if x==0 or y==0: result="數(shù)軸"if x==0 and y==0: result="原點(diǎn)"else: result="象限"C.if x!=0 and y!=0: result="象限"if x==0 or y==0: result="數(shù)軸"else: result="原點(diǎn)"D.if x!=0 and y!=0: result="象限"if x==0 or y==0: result="數(shù)軸"if x==0 and y==0: result="原點(diǎn)"答案 D解析 本題考查Python基本控制結(jié)構(gòu)。 (0,0)是原點(diǎn),即 if x==0 and y==0 表示原點(diǎn);(0,y)或者(x,0)分別表示 y 軸與 x 軸。A 選項(xiàng),x==y==0 時(shí),第 1 個和第 2 個 if 均成立。B選項(xiàng)if x==0 or y==0 且 x 與 y 不同時(shí)為 0 表示數(shù)軸,在第2個分支語句中,再次判斷為"象限"。C選項(xiàng)條件x!=0 and y!=0成立,判斷為"象限",在第2個分支語句中,再次判斷為"原點(diǎn)",因此原點(diǎn)的判斷需在數(shù)軸之前。 D選項(xiàng)分三種情況,用3條分支語句來表達(dá)這種情況。變式訓(xùn)練3 BMI與身體狀況關(guān)系如圖所示BMI<18 18≤BMI≤24 BMI>24偏瘦 正常 偏胖已知某同學(xué)的BMI值存儲在變量X中,小藍(lán)編寫程序判斷該同學(xué)的身體狀況信息,并保存到變量Y中,則下列程序段無法實(shí)現(xiàn)該功能的是 ( )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分支結(jié)構(gòu)基本語法。A 選項(xiàng)只要變量 X 的值大于等于 18,輸出結(jié)果均為“偏胖”,與題干要求不符。例4 正整數(shù)n若是它平方數(shù)的尾部部分若與該正整數(shù)n相等,則稱n為同構(gòu)數(shù)。判斷一個兩位數(shù)n是否是同構(gòu)數(shù)。為實(shí)現(xiàn)上述功能,請?jiān)趧澗€處填入合適的語句。n=int(input("輸入一個正整數(shù)"))if : print('是同構(gòu)數(shù)')else: print('不是同構(gòu)數(shù)')答案 n**2%100==n解析 本題考查的是選擇結(jié)構(gòu)的條件和取余運(yùn)算符的應(yīng)用。選擇結(jié)構(gòu)要選擇合適的條件判斷,n是它平方數(shù)的尾部,n平方數(shù)的后兩位數(shù)為n**2%100。變式訓(xùn)練4 判斷當(dāng)前計(jì)算得到驗(yàn)證碼變量yzm(整型)與商品識別條碼s(字符串型)第13位是否相等,為實(shí)現(xiàn)上述功能,請?jiān)诔绦騽澗€處填入合適的語句。s="3203225155569"if : print("驗(yàn)證通過")else: print("驗(yàn)證不通過")答案 yzm==int(s[12])解析 條件為計(jì)算結(jié)果與最后一位字符相同。但要注意類型的匹配,前者是數(shù)字,后者是字符串。例5 輸入一個身份證號碼s(字符串型),如果他的第17位是奇數(shù),表示該公民的性別為男性,否則為女性。為實(shí)現(xiàn)上述功能,請?jiān)诔绦騽澗€處填入合適的語句。s="330522********5115"if : print("女性")else: print("男性")答案 int(s[16])%2==0或int(s[16])%2!=1解析 取出身份證號碼s的第17位的值為文本,不能用于算術(shù)運(yùn)算。判斷是否是奇數(shù)的條件是除以2后的余數(shù)是否為0。變式訓(xùn)練5 輸入一個正整數(shù)n,判斷它是否是一個完全平方數(shù),若是則輸出“Yes”,否則輸出“No”。為實(shí)現(xiàn)上述功能,請?jiān)趧澗€處填入合適的語句。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的算術(shù)平方根取整后再平方等于原數(shù)n,則n為完全平方數(shù),否則不是。求算術(shù)平方根可用pow函數(shù)或**運(yùn)算實(shí)現(xiàn),因此,判斷條件可寫為int(pow(n,0.5))**2==n或int(n**0.5)**2==n。例6 若三條線段的長度分別為a、b、c,判斷他們是否能構(gòu)成三角形(任意兩邊之和大于第三邊)。為實(shí)現(xiàn)上述功能,請?jiān)诔绦騽澗€處填入合適的語句。a=float(input('please input a:'))b=float(input('please input b:'))c=float(input('please input c:'))if : print('能構(gòu)成三角形')else: print('不能構(gòu)成三角形')答案 (a+b)>c and (b+c)>a and (a+c)>b或a+b>c and a+c>b and b+c>a解析 本題考查的知識點(diǎn)是選擇結(jié)構(gòu)的多條件表達(dá)式。需注意的是:任意兩邊有幾種可能性,他們之間是且還是或的關(guān)系。變式訓(xùn)練6 輸入一個密碼psd,若密碼的長度小于6位,則提示“密碼長度不能少于6位!”,否則提示“OK!”。為實(shí)現(xiàn)上述功能,請?jiān)诔绦騽澗€處填入合適的代碼。psd=input('Please input password:')if : print("OK!")else: print("密碼長度不能少于6位!")答案 len(psd)>=6解析 本題考查的知識點(diǎn)是選擇結(jié)構(gòu)的條件和Len函數(shù)的應(yīng)用。條件是密碼長度大于等于6,因此填入的代碼為len(psd)>=6。例7 用計(jì)算機(jī)模擬一個猜商品價(jià)格的游戲,首先計(jì)算機(jī)隨機(jī)產(chǎn)生一個[20,60]之間的整數(shù)x作為商品的價(jià)格,用戶輸入價(jià)格,若猜中了,提示“恭喜你猜中了!”,所猜價(jià)格與x的差值在5元之內(nèi),提示“加油,答案很接近!”,高于5元,提示“你猜得太高或太低了!”。程序代碼如下所示,請?jiān)诔绦騽澗€處填入合適的代碼:# 計(jì)算機(jī)隨機(jī)產(chǎn)生一個[20,60]之間的整數(shù)x,并賦于變量shpjg,代碼省略jg=int(input("輸入你猜的價(jià)格:"))if① : print("恭喜你猜中了!")elif② : print("你猜得太高或太低了!")else: print("加油,答案很接近!")答案?、賘g==shpjg?、赼bs(jg-shpjg)>=5解析 本題考查的是多分支if語句。根據(jù)題意與代碼可知,①處的判斷條件是輸入價(jià)格與原來價(jià)格是否相等,因此,①處代碼為jg==shpjg;②處為所猜價(jià)格與真實(shí)價(jià)格的距離在5元以外,因此,②處代碼為abs(jg-shpjg)>=5。變式訓(xùn)練7 某旅游景點(diǎn)規(guī)定,身高在1.2米以下的兒童免費(fèi),身高在1.2及米上,但不超過1.5米的兒童購買半價(jià)票,身高超過1.5米的游客購買全價(jià)票。實(shí)現(xiàn)上述功能的程序如下,請?jiān)诔绦騽澗€處填入合適的代碼。h=float(input('請輸入身高(單位米):'))if① : print('免費(fèi)')elif② : print('請購買半價(jià)票')else: print('請購買全價(jià)票')答案?、賖<1.2?、趆<=1.5解析 本題考查的是多分支if語句。根據(jù)題意可知,本題的分支結(jié)構(gòu)條件分別是:h<1.2,1.2<=h<=1.5。因此,①處應(yīng)填入的代碼為h<1.2;②處條件為1.2<=h<=1.5,但elif條件隱含著h>=1.2的條件,因此②處應(yīng)填入的代碼為h<=1.5。變式訓(xùn)練8 用Python語言編寫一個程序,實(shí)現(xiàn)如下功能:輸入某一學(xué)生的性別、身高和體重,計(jì)算該生的BMI指數(shù)并分析其體型情況,得到其體重指數(shù)分?jǐn)?shù),然后輸出。體質(zhì)指數(shù)(BMI)=體重(kg)÷身高(m)2(如:70kg÷(1.75m)2=22.86)等級 體重指數(shù)分?jǐn)?shù) 男 女偏瘦 80 ≤16.4 ≤16.4標(biāo)準(zhǔn) 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):"))① #計(jì)算BMI的值,并四舍五入保留兩位小數(shù) 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:"標(biāo)準(zhǔn)",3:"超重",4:"肥胖"}print("你的體型屬于",③ ) 答案?、賐mi=round(tz/sg**2,2) ②else ③bz[bmizx]解析 本題考查多分支選擇結(jié)構(gòu)。①根據(jù)體質(zhì)指數(shù)(BMI)的計(jì)算公式并用round函數(shù)保留小數(shù)。②除了以上條件外,其余均為肥胖,因此為else。③體型的標(biāo)準(zhǔn)和情況保存在字典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)執(zhí)行該程序段后,輸出的內(nèi)容是 ( )A.6 B.5 C.4 D.3答案 D2.有如下 Python 程序段:# 輸入 3 個整數(shù)分別存儲到變量 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)執(zhí)行該程序段,輸入下列 4 組測試數(shù)據(jù),無法正確輸出 a、b、c 的最大值的是A.10,20,30 B.20,30,10C.30,10,10 D.10,10,10答案 D3.以下程序?qū)崿F(xiàn)與計(jì)算機(jī)玩“石頭剪刀布”的游戲(分別用0,1,2代表石頭、剪刀、布),游戲規(guī)則為:石頭贏剪刀、剪刀贏布、布贏石頭。代碼如下: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解析 本題考查多分支選擇結(jié)構(gòu)。你贏的可能性有3種,一是石頭對剪刀,二是布對石頭,三是剪刀對布,其中前2種可能中,pc-player==1,第3種可能性中,player-pc==2。4.某Python代碼如下,執(zhí)行后輸出的結(jié)果是 ( )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列表的切片和分支結(jié)構(gòu)。L[2]為'orange',因此n=len(L[2])值為6,符合分支語句的第一個條件,執(zhí)行if對應(yīng)的語句塊,此時(shí)ans的值為18,再執(zhí)行ans-=5后ans的值為13,并且輸出。5.用Python 算法描述魚缸水溫預(yù)警功能:當(dāng)水溫高于32度時(shí), LED燈呈現(xiàn)“紅色”;低于27度時(shí),LED燈呈現(xiàn)“藍(lán)色”;其余情況LED燈呈現(xiàn)“綠色”。# 通過傳感器獲取魚缸內(nèi)水溫值,并存儲到變量 t 中LED="綠色"LED="綠色"if : if t>32: LED="紅色" else: LED="藍(lán)色"print("LED 燈顏色顯示:",LED)為實(shí)現(xiàn)上述功能,劃線處正確的 Python 表達(dá)式是 ( )A.not(27C.t<27 or t>32 D.t<27 and t>32答案 C6.下列選項(xiàng)中,對變量flag的賦值與其它三項(xiàng)不等價(jià)的是 ( )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)執(zhí)行后,輸出的結(jié)果為 。 答案 cake解析 本題主要考查的是分支結(jié)構(gòu)。len(list1)返回的是列表list1的長度,即leng=6,條件leng>6不滿足,因此執(zhí)行語句z=list1[leng-1],即取出列表中的最后一個元素,因此z="cake",print命令輸出字符串內(nèi)容時(shí),不顯示引號,因此輸出的結(jié)果為cake,而非"cake"。8.如圖所示的流程圖的功能是根據(jù)用水量求水費(fèi)?;卮鹣铝袉栴}:v=① if② : s=2.4*velif v<=30: ?、邸 ?else: s=4.3*vprint(s)(1)請?jiān)诔绦騽澗€處填入合適的語句。(2)結(jié)合算法和流程圖分析,若輸入用水量為28噸,則輸出的s值將為 ,若輸入用水量為100噸,則輸出的s值為 。 答案 (1)①float(input("輸入用水量:"))或float(input()) ②v<=17?、踫=3.35*v (2)93.8 430解析 本題主要考查的是多分支結(jié)構(gòu)的程序?qū)崿F(xiàn)。(1)v表示的是輸入的用水量,水費(fèi)等于用水量乘以相應(yīng)的單價(jià),因此要將輸入的數(shù)轉(zhuǎn)換為實(shí)數(shù)類型,因此①處語句為float(input("輸入用水量:"))或float(input());根據(jù)s=2.4*v并對照流程圖可知,②處條件為v<=17;根據(jù)elif v<=30可知,③處代碼為s=3.35*v。(2)用水量為28噸,條件1730,因此s=4.3*100=430。9.下列選項(xiàng)的語句中,與“若 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算法控制結(jié)構(gòu)描述“小李起床后20分鐘后去鍛煉,50分鐘后鍛煉結(jié)束去學(xué)?!?設(shè)t為起床后經(jīng)過的時(shí)間,下列選項(xiàng)正確的是 ( )A.if t>50: print("去學(xué)校") else: print("去鍛煉")B.if t>50: print("去學(xué)校") elif t>20: print("去鍛煉")C.if t>20 and t<50: print("去鍛煉") else: print("去學(xué)校")D.if t>20: print("去鍛煉") elif t>50: print("去學(xué)校")答案 B11.用Python算法控制結(jié)構(gòu)描述:若水位高于10(不含)或者排水速度小于0.05(不含),發(fā)出警告。實(shí)時(shí)監(jiān)測到的水位用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一、基礎(chǔ)鞏固 1.使用Python編寫一個輸出門票價(jià)格的程序,代碼如下:h=int(input("請輸入您的身高:"))if h <=120: p=0elif h>140: p=100else: p=50print("您需要支付的門票價(jià)格是:",p)要測試所有分支程序代碼是否正確。以下測試數(shù)據(jù)中,最恰當(dāng)?shù)囊唤M是 ( )A.120,140 B.130,150C.100,130,140 D.100,130,150答案 D解析 本題主要考查Python分支結(jié)構(gòu)的基礎(chǔ)概念,要測試所有分支程序代碼是否正確,因?yàn)橛腥齻€分支,故三個值的取值必須在[0,120],(120,140],(140,+∞),故答案應(yīng)選D。2.以下選項(xiàng)中,與其他三項(xiàng)功能不同的是 ( )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的相關(guān)知識。ABC選項(xiàng)的功能是求最大值。A選項(xiàng)默認(rèn)a是最大值,還有兩個選擇結(jié)構(gòu),分別與b和c比較。B選項(xiàng)是多分支選擇結(jié)構(gòu),如果不滿足條件a>b and a>c,則a不是最大值,最大值可能是b和c。C選項(xiàng)是兩個選擇結(jié)構(gòu),先在a和b是找出最大值,接著最大值與c比較。D選項(xiàng)用3個選擇結(jié)構(gòu)來實(shí)現(xiàn),但有一種情況,即a=b=c時(shí),或最大值有2個時(shí),不能實(shí)現(xiàn)找出最大值的功能。3.下列Python語句中,能體現(xiàn)“若a大于0則b=a,和否則b=-1”表述并實(shí)現(xiàn)其功能的是 ( )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)執(zhí)行該程序段,輸出的結(jié)果是 ( )A.1 B.0 C.報(bào)錯 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))運(yùn)行程序,輸入"1024"后回車,程序的輸出結(jié)果是 答案 8706.若一個四位數(shù),各個位數(shù)上的數(shù)字的4次冪之和等于它本身,則稱這個數(shù)為四葉玫瑰數(shù)。編寫Python程序,判斷輸入一個數(shù)是否為四葉玫瑰數(shù)。(1)四位數(shù)4326 (選填:是/不是)四葉玫瑰數(shù)。 (2)實(shí)現(xiàn)上述功能的Python 程序如下,請?jiān)趧澗€處填入合適代碼。number=int(input("請輸入一個四位數(shù):"))a = number∥1000b =① c = number%100∥10d = number%10if ② : print(number, "是四葉玫瑰數(shù)")else: print(number, "不是四葉玫瑰數(shù)")答案 (1)不是 (2)① number%1000∥100或number∥100%10 ②a**4+b**4+c**4+d**4==number:7.判斷一個三位數(shù)i是否是水仙花數(shù)的條件是:它的各個位數(shù)字a、b、c的立方和與它本身是否相等,若相等為水仙花數(shù),請把下列語句補(bǔ)充完整。a,b,c=1,5,3if : print("是水仙花數(shù)")else: print("不是水仙花數(shù)")答案 a**3+b**3+c**3==a*100+b*10+c解析 掌握數(shù)字的表達(dá),掌握條件的表達(dá)。條件是各個數(shù)字的立方和與他本身相等,那么各個數(shù)字的立方和又該如何表達(dá)。8.輸出某個溫度范圍內(nèi)(從低溫t1到高溫t2)氣體的密度變化情況,輸入溫度t1和t2,要保證溫度t1低于溫度t2,把下列語句補(bǔ)充完整。t1,t2=4,3if : t=t1;t1=t2;t2=t答案 t1>t2解析 本題考查的知識點(diǎn)是選擇結(jié)構(gòu)的條件和交換語句的應(yīng)用。從三條語句t=t1;t1=t2;t2=t來看,是要交換t1和t2的值,根據(jù)題目的要求,從低溫t1到高溫t2,因此若t1比t2大時(shí),需要交換兩者。9.每周星期一,杭州本地牌照尾號為1和9的汽車是限行的,在汽車牌照本中取得最后一個數(shù)字ch(字符串型),判斷該車星期一是否限行,請把下列語句補(bǔ)充完整。pz="浙APW559"if : print("限行")else: print("不限行")答案 pz[-1]=="1" or pz[-1]=="9"或者int(pz[-1])==1 or int(pz[-1])==9解析 兩個條件滿足一個就可以了,但要注意數(shù)據(jù)類型。10.輸入一元二次方程系數(shù)a、b、c,輸出方程根的情況。請把下列語句補(bǔ)充完整。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?、赿==0解析 根據(jù)d的值來判斷是否有根,執(zhí)行語句中已經(jīng)提示“a不能為零”和“方程有一個根”。11.輸入一個字符串s,判斷字符串s中第i個字符的類型,類型分為4種:大寫字母、小寫字母、阿拉伯?dāng)?shù)字、其他字符。請回答下列問題。s=input("please string:")i=3① tot=['其他字符','大寫字母','小寫字母','阿拉伯?dāng)?shù)字']t=0if ch>='A' and ch<="Z": t=1elif ch>='a' and ch<="z": t=2elif ② :#如果是數(shù)字 t=3print('當(dāng)前字符的類型為:',③ ) (1)請?jiān)诔绦騽澗€處填入合適的代碼。(2)運(yùn)行當(dāng)前程序,輸入s的內(nèi)容為“Lm@”,則所屬類型對應(yīng)的列表元素為 。 答案 (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],因?yàn)閕=3,因此也可以寫為ch=s[2];②處語句的功能是判斷當(dāng)前字符是否為數(shù)字,因此代碼為ch>='0' and ch<='9',也可寫為'9'>=ch>='0';變量t對應(yīng)當(dāng)前字符所屬的類型,因此,③處代碼為tot[t]。(2)運(yùn)行當(dāng)前程序,輸入s的內(nèi)容為“Lm@”,則第3個字符為“@”,屬于其他字符類,因此對應(yīng)的列表元素為tot[0]。12.設(shè)計(jì)一個程序,根據(jù)輸入的勞務(wù)報(bào)酬收入計(jì)算勞務(wù)報(bào)酬所得稅。解決此問題的流程圖如圖所示。編寫的Python程序代碼如下所示,請?jiān)趧澗€處填入合適的代碼。x=int(input("請輸入勞務(wù)費(fèi)"))if x<0 or x>1000000: print("請檢查輸入的數(shù)據(jù)")else: if x<=800: y=0 elif① : y=(x-800)*0.2 else: ② print("應(yīng)交稅收"+③ ) 答案 ①x<=4000?、趛=x*0.16 ③str(y)解析 在多分支選擇結(jié)構(gòu)中,每個分支逐一匹配,在第二個分支中,已經(jīng)不滿足x<=800,即所有的x均大于800,因此只需要說明他小于4000即可。二、能力提升13.COD(化學(xué)需氧量)是衡量水質(zhì)污染程度的重要指標(biāo)之一,污水處理時(shí)根據(jù)污水的COD指標(biāo)來計(jì)算COD去除劑的投放量。當(dāng)COD指標(biāo)x小于50時(shí),劑量為10,指標(biāo)大于等于50且小于等于500時(shí),劑量為1.2x/5,指標(biāo)超過500時(shí),劑量為1.5x/4。運(yùn)行程序后,輸入COD指標(biāo),輸出計(jì)算結(jié)果。為實(shí)現(xiàn)上述功能,請?jiān)趧澗€處填入合適的代碼。x=int(input("請輸入COD指標(biāo)x"))if x<50: y=10① : y=1.2*x/5else: ?、凇 ?print("所需劑量為"+str(y))答案 ①elif x<=500?、趛=1.5*x/4解析 注意多分支選擇結(jié)構(gòu)的書寫格式。14.模擬一個簡單計(jì)算器,輸入兩個數(shù)和一個運(yùn)算符(加、減、乘、除),進(jìn)行算術(shù)運(yùn)算,并輸出運(yùn)算結(jié)果。程序運(yùn)行時(shí),先后輸入第一個數(shù)、運(yùn)算符和第二個數(shù),輸出運(yùn)算結(jié)果。當(dāng)輸入的運(yùn)算符不是加、減、乘、除四種運(yùn)算符時(shí),則輸出“運(yùn)算符不正確”;當(dāng)進(jìn)行除法運(yùn)算時(shí),如果除數(shù)為0,提示輸出“除數(shù)不能為零”。為實(shí)現(xiàn)上述功能,請?jiān)趧澗€處填入合適的代碼。x=int(input("請輸入第1個數(shù)"))ch=input("請輸入運(yùn)算符")y=int(input("請輸入第2個數(shù)"))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("除數(shù)不能為0!") flag=False else: z=x/yif② : print("運(yùn)算的結(jié)果為:"+str(z))else: print("運(yùn)算符不正確")答案?、賧==0 ②flag或flag==True解析 提示"除數(shù)不能為0!",因此應(yīng)填寫當(dāng)y等于0時(shí)的情況。由于y=0時(shí),已經(jīng)輸出了內(nèi)容,此時(shí)flag=False,因此只有當(dāng)flag==True時(shí)才有輸出。15.編寫Python程序,實(shí)現(xiàn)如下功能:輸入AQI指數(shù),輸出該AQI值所對應(yīng)的空氣質(zhì)量等級及空氣狀況。程序運(yùn)行效果如圖所示。請輸入AQI指數(shù)值:220空氣質(zhì)量等級為:V 空氣狀況為:重度污染AQI指數(shù)所對應(yīng)的空氣質(zhì)量等級及空氣狀況如表所示:AQI指數(shù) 0-50 51-100 101-150 151-200 201-300 >300等級 Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ空氣狀況 優(yōu) 良 輕度污染 中度污染 重度污染 嚴(yán)重污染實(shí)現(xiàn)上述功能的程序如下。st="Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ"aqi=float(input("請輸入AQI指數(shù)值:"))if aqi<=50: ss="優(yōu)" dj=1elif aqi<=100: ss="良" dj=2elif① : ss="輕度污染" dj=3elif aqi<=200: ss="中度污染" dj=4elif aqi<=300: ss="重度污染" dj=5else: ss="嚴(yán)重污染" dj=6② print("空氣質(zhì)量等級為:"+skydd,"空氣狀況為:"+ss)(1)程序運(yùn)行時(shí),輸入200,則屏幕上顯示的內(nèi)容為 。 (2)請?jiān)诔绦騽澗€處填入合適的代碼。答案 (1)空氣質(zhì)量等級為:Ⅳ,空氣狀況為:中度污染 (2)①aqi<=150?、趕kydd=st[dj-1]解析 本題主要考查的是多分支結(jié)構(gòu)。(1)aqi=200時(shí),對應(yīng)的等級為Ⅳ,屬于中度污染,因此屏幕上顯示的內(nèi)容為“空氣質(zhì)量等級為:Ⅳ,空氣狀況為:中度污染”。(2)①處空氣狀況為“輕度污染”,因此條件為aqi<=150;空氣質(zhì)量等級存儲在字符串skydd中,字符串的第一個字符的索引號為0,因此②處代碼為skydd=st[dj-1]。16.現(xiàn)有編號為"Xs001"、"Xs002"的兩位學(xué)生,分別輸入他們的性別和身高,按一定的規(guī)則進(jìn)行排列,輸出排列后的座位信息,實(shí)現(xiàn)該功能的程序代碼如下:xm1="Xs001"xm2="Xs002"xb1=input("請輸入第1位學(xué)生性別:")sg1=float(input("請輸入第1位學(xué)生身高(米):"))xb2=input("請輸入第2位學(xué)生性別:")sg2=float(input("請輸入第2位學(xué)生身高(米):"))if xb1==xb2 and sg1>sg2: s=xm1+" "+xm2elif xb1==xb2 and sg1<=sg2: s=xm2+" "+xm1elif xb1=="女": s=xm1+" "+xm2else: s=xm2+" "+xm1print("兩位同學(xué)座位依次是:",s)根據(jù)上述算法實(shí)現(xiàn)的功能,用嵌套的選擇結(jié)構(gòu)描述的流程圖如圖所示,(1)將流程圖中①②處補(bǔ)充完整。①__________________________________________________________②__________________________________________________________(2)根據(jù)流程圖,將方框內(nèi)代碼用嵌套的選擇結(jié)構(gòu)實(shí)現(xiàn)相應(yīng)功能,并寫出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)程序功能:相同性別按身高從高到低排列,不同性別女生排在前面,男生排在后面。當(dāng)條件xb1==xb2成立時(shí),表示是相同性別,則進(jìn)行身高的比較,因此①處為sg1>sg2 當(dāng)條件不成立時(shí),女生優(yōu)先,因此②處為xb1=="女" (2)先用一個判斷結(jié)構(gòu)來區(qū)分是否相同的性別,在一個分支中嵌套另一個分支。(共86張PPT)課時(shí)4 分支結(jié)構(gòu)及程序?qū)崿F(xiàn)第三章 算法的程序?qū)崿F(xiàn)1.理解分支結(jié)構(gòu)的執(zhí)行過程。2.掌握分支結(jié)構(gòu)的三種if語句格式的使用。3.能根據(jù)實(shí)際問題選用合適的分支結(jié)構(gòu)來解決。目 錄CONTENTS知識梳理01例題精析02隨堂檢測03鞏固與提升04知識梳理11.選擇結(jié)構(gòu)通過判斷某些特定條件是否滿足來決定下一步的執(zhí)行流程,常見的有單分支選擇結(jié)構(gòu)、雙分支選擇結(jié)構(gòu)、________選擇結(jié)構(gòu)。2.一個選擇結(jié)構(gòu)是一個語句塊,塊內(nèi)的語句一般縮進(jìn)4個空格。在Python中對縮進(jìn)有嚴(yán)格要求,可以根據(jù)縮進(jìn)來判斷語句的從屬關(guān)系。3.選擇語句條件表達(dá)式結(jié)果的數(shù)據(jù)類型是________,值只有__________和____________兩個。多分支邏輯型TrueFalse4.算法進(jìn)行程序?qū)崿F(xiàn)時(shí),分支結(jié)構(gòu)可用if語句來實(shí)現(xiàn)。if語句一般格式是:(1)單分支選擇結(jié)構(gòu)if <條件>:<語句塊1>(2)雙分支選擇結(jié)構(gòu)if<條件>:<語句塊1>else:<語句塊2>(3)多分支選擇結(jié)構(gòu)if <條件1>:<語句塊1>elif <條件2>:<語句塊2>…elif <條件N>:<語句塊N>else:<語句塊N+1>①語句塊是一行或放在一起的多行語句,一般通過行縮進(jìn)來標(biāo)識if、else、elif下方的語句塊必須采用相同的縮進(jìn)。②分支結(jié)構(gòu)的條件只判斷一次,符合條件的語句塊也只執(zhí)行一次。例題精析2例1 調(diào)查發(fā)現(xiàn)人們更傾向于選擇數(shù)字對稱的車牌號,如車牌號“浙H64M46”。于是小石編寫了一個判斷車牌號是否對稱的代碼,Python程序如下:cp=input("請輸入車牌號(格式如“浙H64M46”):")s1=cp[2:4]s2=① if② : print("不是對稱車牌")else: print("是對稱車牌")D為實(shí)現(xiàn)功能,劃線處代碼應(yīng)為 ( )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的字符。若要對稱,則對應(yīng)取cp索引位置為6和5的值。A選項(xiàng)索引位置5取不到。B選項(xiàng)不能正向取。C選項(xiàng)只能取一個字符。D選項(xiàng)當(dāng)步長為負(fù)值時(shí),第一個參數(shù)默認(rèn)為-1,即字符串cp中最后一個索引位置,-3是取不到的,只能取了倒數(shù)第2個。變式訓(xùn)練1 有下列Python程序段:import randoms=input("請輸入字符串:")x=random.randint(3,6) #產(chǎn)生一個[3,6]之間的隨機(jī)整數(shù)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模塊函數(shù)的應(yīng)用及分支結(jié)構(gòu)及字符串的切片。x為采用random模塊產(chǎn)生的[3,6]之間的隨機(jī)整數(shù),按照題意輸入helloworld后n的值為10,帶入if的條件表達(dá)式可得,執(zhí)行第一個分支(將索引值x前面的字符后置)的條件為x<5,推得執(zhí)行第二個分支(不改變字符順序)的條件為x>=5,通過對選項(xiàng)的處理可知A選項(xiàng)中hel后置,x的值為3,可行;B選項(xiàng)hell后置,x的值為4,符合條件,可行;C選項(xiàng)不改變順序,x>=5,可行;D選項(xiàng)hello后置,可得x=5,而x=5時(shí)應(yīng)執(zhí)行第二個分支的語句。D例2 用Python算法控制結(jié)構(gòu)描述“您所在街道25分鐘后小雨,50分鐘后雨?!?設(shè)t為距離天氣預(yù)報(bào)發(fā)布時(shí)間的間隔(單位:分鐘),下列選項(xiàng)正確的是 ( )A解析 本題考查選擇結(jié)構(gòu)。根據(jù)時(shí)間t,分成三個階段。t<=25沒有任何操作,25和50之間是小雨,50之后是雨停。B選項(xiàng)只能表示兩種情況。C選項(xiàng)把t<=25歸結(jié)為雨停。D選項(xiàng)若t>50,肯定滿足條件t>25,因此只能表示一種情況。變式訓(xùn)練2 某市“一戶一表”水費(fèi)單價(jià)標(biāo)準(zhǔn)如下:第一檔次:每戶每月不超過17立方米的用水量,供水價(jià)格為2.4元/立方米;第二檔次:每戶每月17立方米(不含)到30立方米(含)的用水量,供水價(jià)格比第一檔提高0.5倍;第三檔次:每戶每月超過30立方米的用水量,供水價(jià)格比第一檔提高2倍。根據(jù)水費(fèi)單價(jià)標(biāo)準(zhǔn),用Python算法控制結(jié)構(gòu)描述“第二、三檔次的供水價(jià)格”。設(shè)volumn為某個月的用水量,price為供水價(jià)格初始值為2.4(單位;元/立方米),下列選項(xiàng)正確的是 ( )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解析 本題考查選擇算法結(jié)構(gòu)。根據(jù)題目含義,將水價(jià)分為三個檔次,其中第一個檔次是原價(jià)。A選項(xiàng)不能區(qū)分第一檔次和第二檔次。B選項(xiàng)price為供水價(jià)格初始值為2.4,選擇結(jié)構(gòu)中有兩種情況,符合題意。C選項(xiàng)當(dāng)volumn小于30,包含第一二檔。D選項(xiàng)的臨界值不成立。例3 象限是平面直角坐標(biāo)系(笛卡爾坐標(biāo)系)中橫軸和縱軸所劃分的四個區(qū)域,每一個區(qū)域叫做一個象限。象限以原點(diǎn)為中心,x,y 軸為分界線,原點(diǎn)和坐標(biāo)軸上的點(diǎn)不屬于任何象限。某同學(xué)根據(jù)輸入的坐標(biāo)點(diǎn)(x,y)來判斷該坐標(biāo)點(diǎn)的位置所在,以下實(shí)現(xiàn)該分類的 Python 程序段中正確的是 ( )A.if x==0 and y==0: result="原點(diǎn)"if x==0 or y==0: result="數(shù)軸"if x!=0 and y!=0: result="象限"DB.if x==0 or y==0: result="數(shù)軸"if x==0 and y==0: result="原點(diǎn)"else: result="象限"C.if x!=0 and y!=0: result="象限"if x==0 or y==0: result="數(shù)軸"else: result="原點(diǎn)"D.if x!=0 and y!=0: result="象限"if x==0 or y==0: result="數(shù)軸"if x==0 and y==0: result="原點(diǎn)"解析 本題考查Python基本控制結(jié)構(gòu)。 (0,0)是原點(diǎn),即 if x==0 and y==0 表示原點(diǎn);(0,y)或者(x,0)分別表示 y 軸與 x 軸。A 選項(xiàng),x==y==0 時(shí),第 1 個和第 2 個 if 均成立。B選項(xiàng)if x==0 or y==0 且 x 與 y 不同時(shí)為 0 表示數(shù)軸,在第2個分支語句中,再次判斷為"象限"。C選項(xiàng)條件x!=0 and y!=0成立,判斷為"象限",在第2個分支語句中,再次判斷為"原點(diǎn)",因此原點(diǎn)的判斷需在數(shù)軸之前。 D選項(xiàng)分三種情況,用3條分支語句來表達(dá)這種情況。變式訓(xùn)練3 BMI與身體狀況關(guān)系如圖所示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分支結(jié)構(gòu)基本語法。A 選項(xiàng)只要變量 X 的值大于等于 18,輸出結(jié)果均為“偏胖”,與題干要求不符。例4 正整數(shù)n若是它平方數(shù)的尾部部分若與該正整數(shù)n相等,則稱n為同構(gòu)數(shù)。判斷一個兩位數(shù)n是否是同構(gòu)數(shù)。為實(shí)現(xiàn)上述功能,請?jiān)趧澗€處填入合適的語句。n=int(input("輸入一個正整數(shù)"))if : print('是同構(gòu)數(shù)')else: print('不是同構(gòu)數(shù)')答案 n**2%100==n解析 本題考查的是選擇結(jié)構(gòu)的條件和取余運(yùn)算符的應(yīng)用。選擇結(jié)構(gòu)要選擇合適的條件判斷,n是它平方數(shù)的尾部,n平方數(shù)的后兩位數(shù)為n**2%100。變式訓(xùn)練4 判斷當(dāng)前計(jì)算得到驗(yàn)證碼變量yzm(整型)與商品識別條碼s(字符串型)第13位是否相等,為實(shí)現(xiàn)上述功能,請?jiān)诔绦騽澗€處填入合適的語句。s="3203225155569"if : print("驗(yàn)證通過")else: print("驗(yàn)證不通過")答案 yzm==int(s[12])解析 條件為計(jì)算結(jié)果與最后一位字符相同。但要注意類型的匹配,前者是數(shù)字,后者是字符串。例5 輸入一個身份證號碼s(字符串型),如果他的第17位是奇數(shù),表示該公民的性別為男性,否則為女性。為實(shí)現(xiàn)上述功能,請?jiān)诔绦騽澗€處填入合適的語句。s="330522********5115"if : print("女性")else: print("男性")答案 int(s[16])%2==0或int(s[16])%2 !=1解析 取出身份證號碼s的第17位的值為文本,不能用于算術(shù)運(yùn)算。判斷是否是奇數(shù)的條件是除以2后的余數(shù)是否為0。變式訓(xùn)練5 輸入一個正整數(shù)n,判斷它是否是一個完全平方數(shù),若是則輸出“Yes”,否則輸出“No”。為實(shí)現(xiàn)上述功能,請?jiān)趧澗€處填入合適的語句。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的算術(shù)平方根取整后再平方等于原數(shù)n,則n為完全平方數(shù),否則不是。求算術(shù)平方根可用pow函數(shù)或**運(yùn)算實(shí)現(xiàn),因此,判斷條件可寫為int(pow(n,0.5))**2==n或int(n**0.5)**2==n。例6 若三條線段的長度分別為a、b、c,判斷他們是否能構(gòu)成三角形(任意兩邊之和大于第三邊)。為實(shí)現(xiàn)上述功能,請?jiān)诔绦騽澗€處填入合適的語句。a=float(input('please input a:'))b=float(input('please input b:'))c=float(input('please input c:'))if : print('能構(gòu)成三角形')else: print('不能構(gòu)成三角形')答案 (a+b)>c and (b+c)>a and (a+c)>b或a+b>c and a+c>b and b+c>a解析 本題考查的知識點(diǎn)是選擇結(jié)構(gòu)的多條件表達(dá)式。需注意的是:任意兩邊有幾種可能性,他們之間是且還是或的關(guān)系。變式訓(xùn)練6 輸入一個密碼psd,若密碼的長度小于6位,則提示“密碼長度不能少于6位!”,否則提示“OK!”。為實(shí)現(xiàn)上述功能,請?jiān)诔绦騽澗€處填入合適的代碼。psd=input('Please input password:')if : print("OK!")else: print("密碼長度不能少于6位!")答案 len(psd)>=6解析 本題考查的知識點(diǎn)是選擇結(jié)構(gòu)的條件和Len函數(shù)的應(yīng)用。條件是密碼長度大于等于6,因此填入的代碼為len(psd)>=6。例7 用計(jì)算機(jī)模擬一個猜商品價(jià)格的游戲,首先計(jì)算機(jī)隨機(jī)產(chǎn)生一個[20,60]之間的整數(shù)x作為商品的價(jià)格,用戶輸入價(jià)格,若猜中了,提示“恭喜你猜中了!”,所猜價(jià)格與x的差值在5元之內(nèi),提示“加油,答案很接近!”,高于5元,提示“你猜得太高或太低了!”。程序代碼如下所示,請?jiān)诔绦騽澗€處填入合適的代碼:# 計(jì)算機(jī)隨機(jī)產(chǎn)生一個[20,60]之間的整數(shù)x,并賦于變量shpjg,代碼省略jg=int(input("輸入你猜的價(jià)格:"))if ① : print("恭喜你猜中了!")elif ② : print("你猜得太高或太低了!")else: print("加油,答案很接近!")答案?、賘g==shpjg?、赼bs(jg-shpjg)>=5解析 本題考查的是多分支if語句。根據(jù)題意與代碼可知,①處的判斷條件是輸入價(jià)格與原來價(jià)格是否相等,因此,①處代碼為jg==shpjg;②處為所猜價(jià)格與真實(shí)價(jià)格的距離在5元以外,因此,②處代碼為abs(jg-shpjg)>=5。變式訓(xùn)練7 某旅游景點(diǎn)規(guī)定,身高在1.2米以下的兒童免費(fèi),身高在1.2及米上,但不超過1.5米的兒童購買半價(jià)票,身高超過1.5米的游客購買全價(jià)票。實(shí)現(xiàn)上述功能的程序如下,請?jiān)诔绦騽澗€處填入合適的代碼。h=float(input('請輸入身高(單位米):'))if① : print('免費(fèi)')elif② : print('請購買半價(jià)票')else: print('請購買全價(jià)票')答案?、賖<1.2?、趆<=1.5解析 本題考查的是多分支if語句。根據(jù)題意可知,本題的分支結(jié)構(gòu)條件分別是:h<1.2,1.2<=h<=1.5。因此,①處應(yīng)填入的代碼為h<1.2;②處條件為1.2<=h<=1.5,但elif條件隱含著h>=1.2的條件,因此②處應(yīng)填入的代碼為h<=1.5。變式訓(xùn)練8 用Python語言編寫一個程序,實(shí)現(xiàn)如下功能:輸入某一學(xué)生的性別、身高和體重,計(jì)算該生的BMI指數(shù)并分析其體型情況,得到其體重指數(shù)分?jǐn)?shù),然后輸出。體質(zhì)指數(shù)(BMI)=體重(kg)÷身高(m)2(如:70kg÷(1.75m)2=22.86)等級 體重指數(shù)分?jǐn)?shù) 男 女偏瘦 80 ≤16.4 ≤16.4標(biāo)準(zhǔn) 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):"))① #計(jì)算BMI的值,并四舍五入保留兩位小數(shù) 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:"標(biāo)準(zhǔn)",3:"超重",4:"肥胖"}print("你的體型屬于",③ ) 答案 ①bmi=round(tz/sg**2,2) ②else ③bz[bmizx]解析 本題考查多分支選擇結(jié)構(gòu)。①根據(jù)體質(zhì)指數(shù)(BMI)的計(jì)算公式并用round函數(shù)保留小數(shù)。②除了以上條件外,其余均為肥胖,因此為else。③體型的標(biāo)準(zhǔn)和情況保存在字典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執(zhí)行該程序段后,輸出的內(nèi)容是 ( )A.6 B.5 C.4 D.32.有如下 Python 程序段:# 輸入 3 個整數(shù)分別存儲到變量 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)執(zhí)行該程序段,輸入下列 4 組測試數(shù)據(jù),無法正確輸出 a、b、c 的最大值的是( )A.10,20,30 B.20,30,10C.30,10,10 D.10,10,10D3.以下程序?qū)崿F(xiàn)與計(jì)算機(jī)玩“石頭剪刀布”的游戲(分別用0,1,2代表石頭、剪刀、布),游戲規(guī)則為:石頭贏剪刀、剪刀贏布、布贏石頭。代碼如下: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解析 本題考查多分支選擇結(jié)構(gòu)。你贏的可能性有3種,一是石頭對剪刀,二是布對石頭,三是剪刀對布,其中前2種可能中,pc-player==1,第3種可能性中,player-pc==2。4.某Python代碼如下,執(zhí)行后輸出的結(jié)果是 ( )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列表的切片和分支結(jié)構(gòu)。L[2]為'orange',因此n=len(L[2])值為6,符合分支語句的第一個條件,執(zhí)行if對應(yīng)的語句塊,此時(shí)ans的值為18,再執(zhí)行ans-=5后ans的值為13,并且輸出。5.用Python 算法描述魚缸水溫預(yù)警功能:當(dāng)水溫高于32度時(shí), LED燈呈現(xiàn)“紅色”;低于27度時(shí),LED燈呈現(xiàn)“藍(lán)色”;其余情況LED燈呈現(xiàn)“綠色”。# 通過傳感器獲取魚缸內(nèi)水溫值,并存儲到變量 t 中LED="綠色"LED="綠色"if : if t>32: LED="紅色" else: LED="藍(lán)色"print("LED 燈顏色顯示:",LED)C為實(shí)現(xiàn)上述功能,劃線處正確的 Python 表達(dá)式是 ( )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)執(zhí)行后,輸出的結(jié)果為 。 解析 本題主要考查的是分支結(jié)構(gòu)。len(list1)返回的是列表list1的長度,即leng=6,條件leng>6不滿足,因此執(zhí)行語句z=list1[leng-1],即取出列表中的最后一個元素,因此z="cake",print命令輸出字符串內(nèi)容時(shí),不顯示引號,因此輸出的結(jié)果為cake,而非"cake"。答案 cake8.如圖所示的流程圖的功能是根據(jù)用水量求水費(fèi)?;卮鹣铝袉栴}:v=① if② : s=2.4*velif v<=30: ?、邸 ?else: s=4.3*vprint(s)(1)請?jiān)诔绦騽澗€處填入合適的語句。(2)結(jié)合算法和流程圖分析,若輸入用水量為28噸,則輸出的s值將為 ,若輸入用水量為100噸,則輸出的s值為 。 答案 (1)①float(input("輸入用水量:"))或float(input()) ②v<=17?、踫=3.35*v (2)93.8 430解析 本題主要考查的是多分支結(jié)構(gòu)的程序?qū)崿F(xiàn)。(1)v表示的是輸入的用水量,水費(fèi)等于用水量乘以相應(yīng)的單價(jià),因此要將輸入的數(shù)轉(zhuǎn)換為實(shí)數(shù)類型,因此①處語句為float(input("輸入用水量:"))或float(input());根據(jù)s=2.4*v并對照流程圖可知,②處條件為v<=17;根據(jù)elif v<=30可知,③處代碼為s=3.35*v。(2)用水量為28噸,條件1730,因此s=4.3*100=430。9.下列選項(xiàng)的語句中,與“若 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算法控制結(jié)構(gòu)描述“小李起床后20分鐘后去鍛煉,50分鐘后鍛煉結(jié)束去學(xué)?!?設(shè)t為起床后經(jīng)過的時(shí)間,下列選項(xiàng)正確的是 ( )BA.if t>50: print("去學(xué)校") else: print("去鍛煉")B.if t>50: print("去學(xué)校") elif t>20: print("去鍛煉")C.if t>20 and t<50: print("去鍛煉") else: print("去學(xué)校")D.if t>20: print("去鍛煉") elif t>50: print("去學(xué)校")11.用Python算法控制結(jié)構(gòu)描述:若水位高于10(不含)或者排水速度小于0.05(不含),發(fā)出警告。實(shí)時(shí)監(jiān)測到的水位用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鞏固與提升基礎(chǔ)鞏固能力提升1.使用Python編寫一個輸出門票價(jià)格的程序,代碼如下:h=int(input("請輸入您的身高:"))if h <=120: p=0elif h>140: p=100else: p=50print("您需要支付的門票價(jià)格是:",p)D要測試所有分支程序代碼是否正確。以下測試數(shù)據(jù)中,最恰當(dāng)?shù)囊唤M是 ( )A.120,140 B.130,150C.100,130,140 D.100,130,150解析 本題主要考查Python分支結(jié)構(gòu)的基礎(chǔ)概念,要測試所有分支程序代碼是否正確,因?yàn)橛腥齻€分支,故三個值的取值必須在[0,120],(120,140],(140,+∞),故答案應(yīng)選D。A.maxv=a if b>maxv: maxv=b if c>maxv: maxv=cD解析 本題考查分支語句if elif的相關(guān)知識。ABC選項(xiàng)的功能是求最大值。A選項(xiàng)默認(rèn)a是最大值,還有兩個選擇結(jié)構(gòu),分別與b和c比較。B選項(xiàng)是多分支選擇結(jié)構(gòu),如果不滿足條件a>b and a>c,則a不是最大值,最大值可能是b和c。C選項(xiàng)是兩個選擇結(jié)構(gòu),先在a和b是找出最大值,接著最大值與c比較。D選項(xiàng)用3個選擇結(jié)構(gòu)來實(shí)現(xiàn),但有一種情況,即a=b=c時(shí),或最大值有2個時(shí),不能實(shí)現(xiàn)找出最大值的功能。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語句中,能體現(xiàn)“若a大于0則b=a,和否則b=-1”表述并實(shí)現(xiàn)其功能的是 ( )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)執(zhí)行該程序段,輸出的結(jié)果是( )A.1 B.0 C.報(bào)錯 D.-1B5.有如下Python程序:import mathtotal=float(input("請輸入金額:"))if total<=500: total*=0.9elif total<=1500: total*=0.85else: total*=0.75print(math.floor(total))運(yùn)行程序,輸入"1024"后回車,程序的輸出結(jié)果是 。答案 8706.若一個四位數(shù),各個位數(shù)上的數(shù)字的4次冪之和等于它本身,則稱這個數(shù)為四葉玫瑰數(shù)。編寫Python程序,判斷輸入一個數(shù)是否為四葉玫瑰數(shù)。(1)四位數(shù)4326 (選填:是/不是)四葉玫瑰數(shù)。 (2)實(shí)現(xiàn)上述功能的Python 程序如下,請?jiān)趧澗€處填入合適代碼。number=int(input("請輸入一個四位數(shù):"))a = number∥1000b =① c = number%100∥10d = number%10if ② : print(number, "是四葉玫瑰數(shù)")else: print(number, "不是四葉玫瑰數(shù)")答案 (1)不是 (2)① number%1000∥100或number∥100%10 ②a**4+b**4+c**4+d**4==number:7.判斷一個三位數(shù)i是否是水仙花數(shù)的條件是:它的各個位數(shù)字a、b、c的立方和與它本身是否相等,若相等為水仙花數(shù),請把下列語句補(bǔ)充完整。a,b,c=1,5,3if : print("是水仙花數(shù)")else: print("不是水仙花數(shù)")答案 a**3+b**3+c**3==a*100+b*10+c解析 掌握數(shù)字的表達(dá),掌握條件的表達(dá)。條件是各個數(shù)字的立方和與他本身相等,那么各個數(shù)字的立方和又該如何表達(dá)。8.輸出某個溫度范圍內(nèi)(從低溫t1到高溫t2)氣體的密度變化情況,輸入溫度t1和t2,要保證溫度t1低于溫度t2,把下列語句補(bǔ)充完整。t1,t2=4,3if : t=t1;t1=t2;t2=t答案 t1>t2解析 本題考查的知識點(diǎn)是選擇結(jié)構(gòu)的條件和交換語句的應(yīng)用。從三條語句t=t1;t1=t2;t2=t來看,是要交換t1和t2的值,根據(jù)題目的要求,從低溫t1到高溫t2,因此若t1比t2大時(shí),需要交換兩者。9.每周星期一,杭州本地牌照尾號為1和9的汽車是限行的,在汽車牌照本中取得最后一個數(shù)字ch(字符串型),判斷該車星期一是否限行,請把下列語句補(bǔ)充完整。pz="浙APW559"if : print("限行")else: print("不限行")答案 pz[-1]=="1" or pz[-1]=="9"或者int(pz[-1])==1 or int(pz[-1])==9解析 兩個條件滿足一個就可以了,但要注意數(shù)據(jù)類型。10.輸入一元二次方程系數(shù)a、b、c,輸出方程根的情況。請把下列語句補(bǔ)充完整。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("方程沒有根")答案?、賐**2-4*a*c?、赿==0解析 根據(jù)d的值來判斷是否有根,執(zhí)行語句中已經(jīng)提示“a不能為零”和“方程有一個根”。11.輸入一個字符串s,判斷字符串s中第i個字符的類型,類型分為4種:大寫字母、小寫字母、阿拉伯?dāng)?shù)字、其他字符。請回答下列問題。s=input("please string:")i=3① tot=['其他字符','大寫字母','小寫字母','阿拉伯?dāng)?shù)字']t=0if ch>='A' and ch<="Z": t=1elif ch>='a' and ch<="z":t=2elif ② :#如果是數(shù)字 t=3print('當(dāng)前字符的類型為:',③ ) (1)請?jiān)诔绦騽澗€處填入合適的代碼。(2)運(yùn)行當(dāng)前程序,輸入s的內(nèi)容為“Lm@”,則所屬類型對應(yīng)的列表元素為 。 答案 (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],因?yàn)閕=3,因此也可以寫為ch=s[2];②處語句的功能是判斷當(dāng)前字符是否為數(shù)字,因此代碼為ch>='0' and ch<='9',也可寫為'9'>=ch>='0';變量t對應(yīng)當(dāng)前字符所屬的類型,因此,③處代碼為tot[t]。(2)運(yùn)行當(dāng)前程序,輸入s的內(nèi)容為“Lm@”,則第3個字符為“@”,屬于其他字符類,因此對應(yīng)的列表元素為tot[0]。12.設(shè)計(jì)一個程序,根據(jù)輸入的勞務(wù)報(bào)酬收入計(jì)算勞務(wù)報(bào)酬所得稅。解決此問題的流程圖如圖所示。編寫的Python程序代碼如下所示,請?jiān)趧澗€處填入合適的代碼。x=int(input("請輸入勞務(wù)費(fèi)"))if x<0 or x>1000000: print("請檢查輸入的數(shù)據(jù)")else: if x<=800: y=0 elif① : y=(x-800)*0.2 else: ② print("應(yīng)交稅收"+③ ) 答案?、賦<=4000?、趛=x*0.16?、踫tr(y)解析 在多分支選擇結(jié)構(gòu)中,每個分支逐一匹配,在第二個分支中,已經(jīng)不滿足x<=800,即所有的x均大于800,因此只需要說明他小于4000即可。13.COD(化學(xué)需氧量)是衡量水質(zhì)污染程度的重要指標(biāo)之一,污水處理時(shí)根據(jù)污水的COD指標(biāo)來計(jì)算COD去除劑的投放量。當(dāng)COD指標(biāo)x小于50時(shí),劑量為10,指標(biāo)大于等于50且小于等于500時(shí),劑量為1.2x/5,指標(biāo)超過500時(shí),劑量為1.5x/4。運(yùn)行程序后,輸入COD指標(biāo),輸出計(jì)算結(jié)果。為實(shí)現(xiàn)上述功能,請?jiān)趧澗€處填入合適的代碼。x=int(input("請輸入COD指標(biāo)x"))if x<50: y=10① : y=1.2*x/5else: ② print("所需劑量為"+str(y))答案?、賓lif x<=500?、趛=1.5*x/4解析 注意多分支選擇結(jié)構(gòu)的書寫格式。14.模擬一個簡單計(jì)算器,輸入兩個數(shù)和一個運(yùn)算符(加、減、乘、除),進(jìn)行算術(shù)運(yùn)算,并輸出運(yùn)算結(jié)果。程序運(yùn)行時(shí),先后輸入第一個數(shù)、運(yùn)算符和第二個數(shù),輸出運(yùn)算結(jié)果。當(dāng)輸入的運(yùn)算符不是加、減、乘、除四種運(yùn)算符時(shí),則輸出“運(yùn)算符不正確”;當(dāng)進(jìn)行除法運(yùn)算時(shí),如果除數(shù)為0,提示輸出“除數(shù)不能為零”。為實(shí)現(xiàn)上述功能,請?jiān)趧澗€處填入合適的代碼。x=int(input("請輸入第1個數(shù)"))ch=input("請輸入運(yùn)算符")y=int(input("請輸入第2個數(shù)"))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("除數(shù)不能為0!") flag=False else: z=x/yif② : print("運(yùn)算的結(jié)果為:"+str(z))else: print("運(yùn)算符不正確")答案 ①y==0?、趂lag或flag==True解析 提示"除數(shù)不能為0!",因此應(yīng)填寫當(dāng)y等于0時(shí)的情況。由于y=0時(shí),已經(jīng)輸出了內(nèi)容,此時(shí)flag=False,因此只有當(dāng)flag==True時(shí)才有輸出。15.編寫Python程序,實(shí)現(xiàn)如下功能:輸入AQI指數(shù),輸出該AQI值所對應(yīng)的空氣質(zhì)量等級及空氣狀況。程序運(yùn)行效果如圖所示。AQI指數(shù)所對應(yīng)的空氣質(zhì)量等級及空氣狀況如表所示:請輸入AQI指數(shù)值:220空氣質(zhì)量等級為:V 空氣狀況為:重度污染AQI指數(shù) 0-50 51-100 101-150 151-200 201-300 >300等級 Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ空氣狀況 優(yōu) 良 輕度污染 中度污染 重度污染 嚴(yán)重污染實(shí)現(xiàn)上述功能的程序如下。st="Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ"aqi=float(input("請輸入AQI指數(shù)值:"))if aqi<=50: ss="優(yōu)" dj=1elif aqi<=100: ss="良" dj=2elif① : ss="輕度污染" dj=3elif aqi<=200: ss="中度污染" dj=4elif aqi<=300: ss="重度污染" dj=5else: ss="嚴(yán)重污染" dj=6② print("空氣質(zhì)量等級為:"+skydd,"空氣狀況為:"+ss)(1)程序運(yùn)行時(shí),輸入200,則屏幕上顯示的內(nèi)容為 。 (2)請?jiān)诔绦騽澗€處填入合適的代碼。答案 (1)空氣質(zhì)量等級為:Ⅳ,空氣狀況為:中度污染 (2)①aqi<=150 ②skydd=st[dj-1]解析 本題主要考查的是多分支結(jié)構(gòu)。(1)aqi=200時(shí),對應(yīng)的等級為Ⅳ,屬于中度污染,因此屏幕上顯示的內(nèi)容為“空氣質(zhì)量等級為:Ⅳ,空氣狀況為:中度污染”。(2)①處空氣狀況為“輕度污染”,因此條件為aqi<=150;空氣質(zhì)量等級存儲在字符串skydd中,字符串的第一個字符的索引號為0,因此②處代碼為skydd=st[dj-1]。16.現(xiàn)有編號為"Xs001"、"Xs002"的兩位學(xué)生,分別輸入他們的性別和身高,按一定的規(guī)則進(jìn)行排列,輸出排列后的座位信息,實(shí)現(xiàn)該功能的程序代碼如下:xm1="Xs001"xm2="Xs002"xb1=input("請輸入第1位學(xué)生性別:")sg1=float(input("請輸入第1位學(xué)生身高(米):"))xb2=input("請輸入第2位學(xué)生性別:")sg2=float(input("請輸入第2位學(xué)生身高(米):"))print("兩位同學(xué)座位依次是:",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根據(jù)上述算法實(shí)現(xiàn)的功能,用嵌套的選擇結(jié)構(gòu)描述的流程圖如圖所示,(1)將流程圖中①②處補(bǔ)充完整。①_______________________________________②_______________________________________(2)根據(jù)流程圖,將方框內(nèi)代碼用嵌套的選擇結(jié)構(gòu)實(shí)現(xiàn)相應(yīng)功能,并寫出Python語句塊。答案 (1)①sg1>sg2 ?、趚b1=="女" (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)程序功能:相同性別按身高從高到低排列,不同性別女生排在前面,男生排在后面。當(dāng)條件xb1==xb2成立時(shí),表示是相同性別,則進(jìn)行身高的比較,因此①處為sg1>sg2 當(dāng)條件不成立時(shí),女生優(yōu)先,因此②處為xb1=="女" (2)先用一個判斷結(jié)構(gòu)來區(qū)分是否相同的性別,在一個分支中嵌套另一個分支。課時(shí)4 分支結(jié)構(gòu)及程序?qū)崿F(xiàn)課時(shí)目標(biāo)1.理解分支結(jié)構(gòu)的執(zhí)行過程。2.掌握分支結(jié)構(gòu)的三種if語句格式的使用。3.能根據(jù)實(shí)際問題選用合適的分支結(jié)構(gòu)來解決。1.選擇結(jié)構(gòu)通過判斷某些特定條件是否滿足來決定下一步的執(zhí)行流程,常見的有單分支選擇結(jié)構(gòu)、雙分支選擇結(jié)構(gòu)、________選擇結(jié)構(gòu)。2.一個選擇結(jié)構(gòu)是一個語句塊,塊內(nèi)的語句一般縮進(jìn)4個空格。在Python中對縮進(jìn)有嚴(yán)格要求,可以根據(jù)縮進(jìn)來判斷語句的從屬關(guān)系。3.選擇語句條件表達(dá)式結(jié)果的數(shù)據(jù)類型是________,值只有________和________兩個。4.算法進(jìn)行程序?qū)崿F(xiàn)時(shí),分支結(jié)構(gòu)可用if語句來實(shí)現(xiàn)。if語句一般格式是:(1)單分支選擇結(jié)構(gòu)if 〈條件〉:〈語句塊1〉(2)雙分支選擇結(jié)構(gòu)if 〈條件〉:〈語句塊1〉else:〈語句塊2〉(3)多分支選擇結(jié)構(gòu)if 〈條件1〉:〈語句塊1〉elif 〈條件2〉:〈語句塊2〉…elif 〈條件N〉:〈語句塊N〉else:〈語句塊N+1〉①語句塊是一行或放在一起的多行語句,一般通過行縮進(jìn)來標(biāo)識if、else、elif下方的語句塊必須采用相同的縮進(jìn)。②分支結(jié)構(gòu)的條件只判斷一次,符合條件的語句塊也只執(zhí)行一次。 例1 調(diào)查發(fā)現(xiàn)人們更傾向于選擇數(shù)字對稱的車牌號,如車牌號“浙H64M46”。于是小石編寫了一個判斷車牌號是否對稱的代碼,Python程序如下:cp=input(″請輸入車牌號(格式如“浙H64M46”):″)s1=cp[2:4]s2=①____if②____:print(″不是對稱車牌″)else:print(″是對稱車牌″)為實(shí)現(xiàn)功能,劃線處代碼應(yīng)為( )A.①cp[6:5:-1] ?、趕1==s2B.①cp[5:] ②s1?。絪2C.①cp[5:6] ②s1==s2D.①cp[:-3:-1] ②s1?。絪2聽課筆記: 變式訓(xùn)練1 有下列Python程序段:import randoms=input(″請輸入字符串:″)x=random.randint(3,6) #產(chǎn)生一個[3,6]之間的隨機(jī)整數(shù)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)執(zhí)行該程序段,若輸入“helloworld”(不包含雙引號),則輸出的結(jié)果不可能的是( )A.loworldhel B.oworldhellC.helloworld D.worldhello例2 用Python算法控制結(jié)構(gòu)描述“您所在街道25分鐘后小雨,50分鐘后雨停”,設(shè)t為距離天氣預(yù)報(bào)發(fā)布時(shí)間的間隔(單位:分鐘),下列選項(xiàng)正確的是( )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(″雨?!?聽課筆記: 變式訓(xùn)練2 某市“一戶一表”水費(fèi)單價(jià)標(biāo)準(zhǔn)如下:第一檔次:每戶每月不超過17立方米的用水量,供水價(jià)格為2.4元/立方米;第二檔次:每戶每月17立方米(不含)到30立方米(含)的用水量,供水價(jià)格比第一檔提高0.5倍;第三檔次:每戶每月超過30立方米的用水量,供水價(jià)格比第一檔提高2倍。根據(jù)水費(fèi)單價(jià)標(biāo)準(zhǔn),用Python算法控制結(jié)構(gòu)描述“第二、三檔次的供水價(jià)格”。設(shè)volumn為某個月的用水量,price為供水價(jià)格初始值為2.4(單位;元/立方米),下列選項(xiàng)正確的是( )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 象限是平面直角坐標(biāo)系(笛卡爾坐標(biāo)系)中橫軸和縱軸所劃分的四個區(qū)域,每一個區(qū)域叫做一個象限。象限以原點(diǎn)為中心,x,y 軸為分界線,原點(diǎn)和坐標(biāo)軸上的點(diǎn)不屬于任何象限。某同學(xué)根據(jù)輸入的坐標(biāo)點(diǎn)(x,y)來判斷該坐標(biāo)點(diǎn)的位置所在,以下實(shí)現(xiàn)該分類的 Python 程序段中正確的是( )A.if x==0 and y==0: result=″原點(diǎn)″ if x==0 or y==0: result=″數(shù)軸″ if x?。? and y!=0: result=″象限″B.if x==0 or y==0: result=″數(shù)軸″ if x==0 and y==0: result=″原點(diǎn)″ else: result=″象限″C.if x?。? and y?。?: result=″象限″ if x==0 or y==0: result=″數(shù)軸″ else: result=″原點(diǎn)″D.if x!=0 and y?。?: result=″象限″ if x==0 or y==0: result=″數(shù)軸″ if x==0 and y==0: result=″原點(diǎn)″聽課筆記: 變式訓(xùn)練3 BMI與身體狀況關(guān)系如圖所示BMI<18 18≤BMI≤24 BMI>24偏瘦 正常 偏胖已知某同學(xué)的BMI值存儲在變量X中,小藍(lán)編寫程序判斷該同學(xué)的身體狀況信息,并保存到變量Y中,則下列程序段無法實(shí)現(xiàn)該功能的是( )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 正整數(shù)n若是它平方數(shù)的尾部部分若與該正整數(shù)n相等,則稱n為同構(gòu)數(shù)。判斷一個兩位數(shù)n是否是同構(gòu)數(shù)。為實(shí)現(xiàn)上述功能,請?jiān)趧澗€處填入合適的語句。n=int(input(″輸入一個正整數(shù)″))if________: print('是同構(gòu)數(shù)')else: print('不是同構(gòu)數(shù)')聽課筆記: 變式訓(xùn)練4 判斷當(dāng)前計(jì)算得到驗(yàn)證碼變量yzm(整型)與商品識別條碼s(字符串型)第13位是否相等,為實(shí)現(xiàn)上述功能,請?jiān)诔绦騽澗€處填入合適的語句。s=″3203225155569″if____________: print(″驗(yàn)證通過″)else: print(″驗(yàn)證不通過″)例5 輸入一個身份證號碼s(字符串型),如果他的第17位是奇數(shù),表示該公民的性別為男性,否則為女性。為實(shí)現(xiàn)上述功能,請?jiān)诔绦騽澗€處填入合適的語句。s=″330522********5115″if________: print(″女性″)else: print(″男性″)聽課筆記: 變式訓(xùn)練5 輸入一個正整數(shù)n,判斷它是否是一個完全平方數(shù),若是則輸出“Yes”,否則輸出“No”。為實(shí)現(xiàn)上述功能,請?jiān)趧澗€處填入合適的語句。n=int(input('please input n:'))if________: print('Yes')else: print('No')例6 若三條線段的長度分別為a、b、c,判斷他們是否能構(gòu)成三角形(任意兩邊之和大于第三邊)。為實(shí)現(xiàn)上述功能,請?jiān)诔绦騽澗€處填入合適的語句。a=float(input('please input a:'))b=float(input('please input b:'))c=float(input('please input c:'))if________________: print('能構(gòu)成三角形')else: print('不能構(gòu)成三角形')聽課筆記: 變式訓(xùn)練6 輸入一個密碼psd,若密碼的長度小于6位,則提示“密碼長度不能少于6位!”,否則提示“OK!”。為實(shí)現(xiàn)上述功能,請?jiān)诔绦騽澗€處填入合適的代碼。psd=input('Please input password:')if____________: print(″OK!″)else: print(″密碼長度不能少于6位!″)例7 用計(jì)算機(jī)模擬一個猜商品價(jià)格的游戲,首先計(jì)算機(jī)隨機(jī)產(chǎn)生一個[20,60]之間的整數(shù)x作為商品的價(jià)格,用戶輸入價(jià)格,若猜中了,提示“恭喜你猜中了!”,所猜價(jià)格與x的差值在5元之內(nèi),提示“加油,答案很接近!”,高于5元,提示“你猜得太高或太低了!”。程序代碼如下所示,請?jiān)诔绦騽澗€處填入合適的代碼:# 計(jì)算機(jī)隨機(jī)產(chǎn)生一個[20,60]之間的整數(shù)x,并賦于變量shpjg,代碼省略jg=int(input(″輸入你猜的價(jià)格:″))if①____________: print(″恭喜你猜中了!″)elif②____________: print(″你猜得太高或太低了!″)else: print(″加油,答案很接近!″)聽課筆記: 變式訓(xùn)練7 某旅游景點(diǎn)規(guī)定,身高在1.2米以下的兒童免費(fèi),身高在1.2及米上,但不超過1.5米的兒童購買半價(jià)票,身高超過1.5米的游客購買全價(jià)票。實(shí)現(xiàn)上述功能的程序如下,請?jiān)诔绦騽澗€處填入合適的代碼。h=float(input('請輸入身高(單位米):'))if①____________: print('免費(fèi)')elif②____________: print('請購買半價(jià)票')else: print('請購買全價(jià)票')變式訓(xùn)練8 用Python語言編寫一個程序,實(shí)現(xiàn)如下功能:輸入某一學(xué)生的性別、身高和體重,計(jì)算該生的BMI指數(shù)并分析其體型情況,得到其體重指數(shù)分?jǐn)?shù),然后輸出。體質(zhì)指數(shù)(BMI)=體重(kg)÷身高(m)2(如:70kg÷(1.75m)2=22.86)等級 體重指數(shù)分?jǐn)?shù) 男 女偏瘦 80 ≤16.4 ≤16.4標(biāo)準(zhǔn) 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):″))①________ #計(jì)算BMI的值,并四舍五入保留兩位小數(shù)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:″標(biāo)準(zhǔn)″,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)執(zhí)行該程序段后,輸出的內(nèi)容是 ( )A.6 B.5 C.4 D.32.有如下 Python 程序段:# 輸入 3 個整數(shù)分別存儲到變量 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)執(zhí)行該程序段,輸入下列 4 組測試數(shù)據(jù),無法正確輸出 a、b、c 的最大值的是A.10,20,30 B.20,30,10C.30,10,10 D.10,10,103.以下程序?qū)崿F(xiàn)與計(jì)算機(jī)玩“石頭剪刀布”的游戲(分別用0,1,2代表石頭、剪刀、布),游戲規(guī)則為:石頭贏剪刀、剪刀贏布、布贏石頭。代碼如下: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代碼如下,執(zhí)行后輸出的結(jié)果是 ( )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 算法描述魚缸水溫預(yù)警功能:當(dāng)水溫高于32度時(shí), LED燈呈現(xiàn)“紅色”;低于27度時(shí),LED燈呈現(xiàn)“藍(lán)色”;其余情況LED燈呈現(xiàn)“綠色”。# 通過傳感器獲取魚缸內(nèi)水溫值,并存儲到變量 t 中LED="綠色"LED="綠色"if : if t>32: LED="紅色" else: LED="藍(lán)色"print("LED 燈顏色顯示:",LED)為實(shí)現(xiàn)上述功能,劃線處正確的 Python 表達(dá)式是 ( )A.not(27C.t<27 or t>32 D.t<27 and t>326.下列選項(xiàng)中,對變量flag的賦值與其它三項(xiàng)不等價(jià)的是 ( )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)執(zhí)行后,輸出的結(jié)果為 。 8.如圖所示的流程圖的功能是根據(jù)用水量求水費(fèi)。回答下列問題:v=① if② : s=2.4*velif v<=30: ?、邸 ?else: s=4.3*vprint(s)(1)請?jiān)诔绦騽澗€處填入合適的語句。(2)結(jié)合算法和流程圖分析,若輸入用水量為28噸,則輸出的s值將為 ,若輸入用水量為100噸,則輸出的s值為 。 9.下列選項(xiàng)的語句中,與“若 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算法控制結(jié)構(gòu)描述“小李起床后20分鐘后去鍛煉,50分鐘后鍛煉結(jié)束去學(xué)?!?設(shè)t為起床后經(jīng)過的時(shí)間,下列選項(xiàng)正確的是 ( )A.if t>50: print("去學(xué)校") else: print("去鍛煉")B.if t>50: print("去學(xué)校") elif t>20: print("去鍛煉")C.if t>20 and t<50: print("去鍛煉") else: print("去學(xué)校")D.if t>20: print("去鍛煉") elif t>50: print("去學(xué)校")11.用Python算法控制結(jié)構(gòu)描述:若水位高于10(不含)或者排水速度小于0.05(不含),發(fā)出警告。實(shí)時(shí)監(jiān)測到的水位用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("正常!") 展開更多...... 收起↑ 資源列表 課時(shí)4 分支結(jié)構(gòu)及程序?qū)崿F(xiàn) 學(xué)案 浙教版(2019)必修1.doc 課時(shí)4 分支結(jié)構(gòu)及程序?qū)崿F(xiàn) 教案 浙教版(2019)必修1.doc 課時(shí)4 分支結(jié)構(gòu)及程序?qū)崿F(xiàn) 課件(共86張ppt)浙教版(2019)必修1.pptx 縮略圖、資源來源于二一教育資源庫