資源簡介 專題6 簡單算法及程序?qū)崿F(xiàn)學業(yè)要求 知 識 點 學業(yè)水平等級1.掌握解析算法、枚舉算法的算法特征,并會用計算機程序?qū)崿F(xiàn)這兩種算法 22.掌握程序調(diào)試與運行的方法,理解算法優(yōu)化對解決問題的影響 2知識點一 枚舉算法【知識梳理】1.抽象指找到解決問題的主要________,________指影響問題各種因素之間的關系。根據(jù)問題的前提條件與所求結果之間的關系,找出求解問題的方法和步驟,并用相應過程描述出來。2.解析算法的解題思路:先確定問題的________條件,找解決問題的數(shù)學表達式,再根據(jù)表達式確定問題要求的解。3.枚舉算法的基本思想:把問題所有________的解一一列舉,然后________每一個列舉出的可能解是否為正確的解。4.枚舉算法程序?qū)崿F(xiàn)的三個主要環(huán)節(jié):________解(循環(huán)語句),________解(條件判斷),輸出解(或統(tǒng)計解的個數(shù))。其一般程序結構特點是循環(huán)包含分支結構語句,實現(xiàn)對枚舉出的解進行判斷與篩選。其中,循環(huán)包含分支結構語句,用于確定枚舉對象枚舉范圍和判定條件。5.枚舉法的優(yōu)化:盡可能地縮小解的列舉________。【經(jīng)典案例】抽象和建模是用程序?qū)崿F(xiàn)算法前的重要步驟,抽象找出影響問題的主要因素,明確已知什么和求什么。建模是描述主要因素之間的關系,一是明確方法,往往采用遍歷列表的方法;二是明確步驟,往往是求符合條件的和、個數(shù)、最值和平均值。遍歷是按照一定的規(guī)則和次序訪問數(shù)據(jù)元素中的所有節(jié)點,使得每個節(jié)點都被訪問一次且僅被訪問一次。在遍歷過程中,可以對訪問過的數(shù)據(jù)進行求和、計數(shù)、求平均值和求最大值或最小值操作。枚舉算法簡稱枚舉法,也稱為列舉法、窮舉法,是暴力策略的具體體現(xiàn),又稱為蠻力法,在遍歷過程中求值與條件進行比對的過程。枚舉法的基本思想是:逐一列舉問題所涉及的所有情形,并根據(jù)問題提出的條件檢驗哪些是問題的解,哪些應予排除。【例1】 某倉庫有一排連續(xù)相鄰的貨位,編號依次為0~n-1,用于放置A、B兩種類型的箱子,A型箱子占2個相鄰貨位,B型箱子占1個貨位。編寫程序,根據(jù)已完成的放置或搬離操作,輸出空貨位數(shù)及還可以放置A型箱子的最多數(shù)量(不移動已放置的箱子)。請回答下列問題:箱子類型 操作類型 貨位編號B 放置 5A 放置 2,3B 放置 0A 放置 7,8A 搬離 2,3(1)若n為10,開始時貨位全空,經(jīng)過如圖所示的放置或搬離操作后,不移動已放置箱子的情況下,還可放置A型箱子的最多數(shù)量為________個。(2)實現(xiàn)上述功能的部分Python程序如下,請在劃線處填入合適的代碼。#讀取貨位總數(shù)存入n,代碼略。cnt1=nlst=[0]*n #貨位狀態(tài),0表示對應的貨位為空while True:#讀取本次已描述數(shù)據(jù):箱子類型、操作類型、貨位編號起始值存入t,d和s,代碼略if t==″A″:w=2①________:w=1else: #不是″A″或″B″時退出循環(huán)breakif d==″P″: #d為P時表示放置,否則表示搬離②________else:cnt1+=wlst[s]=1-lst[s]if t==″A″:lst[s+1]=1-lst[s+1]i,cnt2=0,0while iif lst[i]==0 and lst[i+1]==0: ③________ cnt2+=1i+=1print(″當前空貨位數(shù)″,cnt1,″,還可放置A型箱子的最多數(shù)量:″,cnt2)思維點撥明考向 本題考查列表的遍歷精點撥 (1)經(jīng)過放置或搬離操作后,索引位置1-4是空的,6和9是空的,因此可以放置A型箱子2個。(2)①w是兩種箱子所占貨位,因此當輸入是B是占位為1。②cnt1當前空貨位數(shù),d為P時表示放置,否則表示搬離,條件不成立時,空位增加,因此條件成立時,空位減少。③cnt2表示還可放置A型箱子的最多數(shù)量,當條件lst[i]==0 and lst[i+1]==0成立時,表示可以放置A類型,因此下一個貨位要跳過聽課筆記:________________________________________________________________________________________________________________________________________________________________________________________________________【變式1】 某Python程序段如下:s1=input(″請輸入字符串:″)s2=″″for i in range (len(s1)):c=s1[i]if ″0″<=c<=″9″:c=str((int (c)+3)%10)elif ″a″<=c<=″z″:c=chr(ord(c)-32)s2=s2+cprint (s2)程序運行后,輸入“9790,JiaYou″,輸出的結果是( )A.6467,jiayou B.6467,JIAYOUC.2023,jiayou D.2023,JIAYOU【例2】 機器人移動路線管理。機器人在一平面內(nèi)按照程序預置數(shù)據(jù)來完成移動操作(如圖a所示),規(guī)則如下:①只能水平或垂直方向移動,方向取值:上:U、下:D、左:L、右:R,不能走斜線;每次移動1-5單位距離;②從起點出發(fā),經(jīng)過若干步后,盡可能返回到起點,如不能自動返回,則計算剩余移動次數(shù)。請在劃線處填入合適的代碼。(1)解決上述問題的主程序如下:bp=startpos() #輸入起點坐標dirt=[] #移動方向step=[] #移動距離readdata() #從data.csv文件中讀取移動數(shù)據(jù)pos=[bp] #從起點開始存儲所有經(jīng)過點的x、y坐標for i in range(0,len(dirt)): #利用預置數(shù)據(jù)移動tmp=move(pos[i],dirt[i],step[i])pos.append(tmp)print(″經(jīng)過的位置點如下所示:″,″n″,pos)if tmp==________: #判斷能否返回起點print(″可以直接返回起點位置!″)else:print(″不能直接返回起點位置!″,end=″″)stpx=gettimes(pos[0][0],pos[-1][0])stpy=gettimes(pos[0][1],pos[-1][1])print(″至少需要移動″+str(stpx+stpy)+″次才能返回起點位置!″)(2)編寫函數(shù)startpos(),功能為輸入起點坐標,返回坐標的值,返回值類型為列表。代碼如下:def startpos():x=int(input('輸入起點的x坐標:'))y=int(input('輸入起點的y坐標:'))return________(3)編寫readdata()函數(shù),功能為從CSV文件中讀取預置的移動數(shù)據(jù)。代碼如下:def readdata():import csvf=open(″data.csv″,″r″,encoding=″utf-8″)f_csv=csv.reader(f)title=next(f_csv) #讀取標題行for line in f_csv:dirt.append(line[0])step.append(________)f.close()(4)編寫位置移動函數(shù)move(),實現(xiàn)計算移動到的新位置。代碼如下:def move(pos,dr,lg): #位置移動new_pos=[0,0]if dr==″U″:x=0;y=1elif dr==″D″:x=0;y=-1elif dr==″L″:x=-1;y=0elif dr==″R″:x=1;y=0new_pos[0]=pos[0]+x*lg______________return new_pos(5)編寫函數(shù)gettimes(),計算剩余移動次數(shù)。代碼如下:def gettimes(p1,p2):p=abs(p1-p2)//5if abs(p1-p2)%5!=0: ________return p思維點撥精點撥 (1)起點坐標保存在列表bp索引為零的位置。(2)功能為輸入起點坐標,返回坐標[x,y]的值,返回值類型為列表。(3)函數(shù)調(diào)用代碼move(pos[i],dirt[i],step[i]),step[i]對應參數(shù)lg,lg是一個整數(shù)。(4)new_pos[0]是橫坐標,new_pos[1]是縱坐標。(5)根據(jù)returnp,可知變量p保存的是移動次數(shù)。根據(jù)p=abs(p1-p2)//5,如果條件語句不滿足(能整除5),函數(shù)值就直接返回p了聽課筆記:_______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________【變式2】 圖書查詢。所有正版圖書均有唯一的國際標準書號(ISBN),ISBN由13位數(shù)字和字符“-”組成,字符“-”對數(shù)字間隔分段。如:某圖書的ISBN為“978-7-5536-3176-9”(其中“978”表示圖書類代碼,“7”表示地區(qū)碼,“5536”表示出版社代碼,“3176”表示書序碼,“9”為校驗碼)。小李為某校園書吧編寫了圖書查詢的程序。請在劃線處填入合適的代碼。(1)主程序lst1=readfile(″in.csv″) #校園書吧庫存圖書信息存儲在文件″in.csv″while True:print(″1.驗證 ISBN 校驗碼;2.統(tǒng)計出版社費用;3.操作結束″)opt=int(input(″請輸入操作編號(1-3):″))if opt==1:isbn=input(″請輸入 ISBN 號:″)if check(isbn): print(″校驗碼正確″)else: print(″校驗碼錯誤″)elif opt==2:code=input(″請輸入出版社代碼:″)money=total(code)print(″書吧中該出版社出版的圖書總價:%.2f 元″ %money)#輸出的總金額保留 2 位小數(shù)點else:print(″操作結束″)break運行程序,若輸入opt值為4,程序?qū)_______(單選,填字母;A.運行時報錯/B.輸出“操作結束”)。(2)讀寫文件小李將校園書吧庫存圖書信息存儲在文件″in.csv″中,內(nèi)容如圖所示。函數(shù)readfile()用于逐行讀取文件數(shù)據(jù)存入列表并返回。import pandas as pddef readfile(filename): #讀csv格式文件內(nèi)容,將其存入列表并返回df1=pd.read_csv(filename,encoding=″GBK″)lst=[]for i in df1.index:isbn=df1[″ISBN″][i]num=df1[″圖書數(shù)量″][i]price=df1[″單價(元)″][i]lst.append([isbn,num,price]) #添加到列表return____________(3)校驗碼驗證ISBN最后一位的校驗碼用來檢驗前面12數(shù)字是否準確,是保護知識產(chǎn)權的一種檢驗方法。計算方法如下:①將ISBN中前12位數(shù)字從左到右依次編號為“1、2、3、……、12”。②若數(shù)字編號是奇數(shù),則對應權值為1,否則權值為3。首先將ISBN中前12位的數(shù)字值與對應權值相乘,然后將計算所得值進行累加。③最后,用10減去第②步結果對10整除的余數(shù),所得結果即為校驗碼。def check(ISBN): #對ISBN校驗碼驗證n=len(ISBN)val=0;k=3for i in range(0,n-1):if '0'<=ISBN[i]<='9': k=4-k val+=int(ISBN[i])*k______________________if result==int(ISBN[-1]):return Trueelse:return False(4)統(tǒng)計校園書吧中某出版社出版的所有圖書總價列表lst1中的部分數(shù)據(jù)如:[['978-7-5139-3066-6',7,59.80],['978-7-5063-3174-6',9,48.00],……]def total(code):#統(tǒng)計書吧中出版社代碼為code的所有圖書總價n=len(lst1)money=0for i in range(n):isn=lst1[i][0].split('-') #將字符串list1[i][0]以“-”為分隔符,分割成多個字符串組成的列表 if isn[2]==code: ____________return money知識點二 在一個序列中遍歷元素【知識梳理】1.列表當前位置的索引為i,與他相鄰的前面索引位置為________,后面數(shù)據(jù)的索引位置為________。2.n個數(shù)據(jù)的序列中,若要進行兩個數(shù)據(jù)之間的比較,那么比較次數(shù)為________。3.數(shù)據(jù)在一個序列中可以________存在,即與前后數(shù)據(jù)沒有特定的關系。4.數(shù)據(jù)在一個序列中也可能是一段一段存在的。這個段指相同的元素、連續(xù)的幾個數(shù)字或________、連續(xù)遞增或遞減的________等。5.采用兩個變量i和j分別表示某個子序列的開始位置和結束位置,從而計算子序列的________。6.用變量i遍歷序列時,用變量t計算子序列的長度,當變量i指向不符合條件的位置時,可以計算子序列的________位置。【經(jīng)典案例】在一個序列中遍歷元素可以分為兩種情況,一是對單個元素進行遍歷,如對字符串進行加密、壓縮算法。二是要找出序列中一個連續(xù)的子序列,如找一個依次相連的子串,找一個連續(xù)遞增或遞減的子序列。在第二種情況中,將涉及該元素與他前面或后面元素的關系,因此需與他們依次進行比較,比較總次數(shù)比元素的個數(shù)少1個,因此往往最后一個元素得到遍歷。若采用雙重循環(huán)解決此類問題,就不存在沒有遍歷到的情況。【例1】 已排序的列表a有n個整型元素,現(xiàn)要查找出現(xiàn)次數(shù)最多的值并輸出。若出現(xiàn)次數(shù)最多的值有多個,則輸出最前面的一個。實現(xiàn)該功能的程序段如下,方框中應填入的正確代碼為________(單選,填字母)。c,m,v=1,1,0for i in range(1,n):print(a[v])A.if a[i]==a[i-1]:c+=1if c>m:m=cv=ielse:c=1B.if a[i]==a[i-1]:c+=1if c>m:m=cv=ielse:c=1C.if a[i]==a[i-1]:c+=1else:if c>m:m=cv=i-1c=1D.if a[i]==a[i-1]:c+=1else:if c>m:m=cv=i-1c=1思維點撥明考向 本題考查一維列表的遍歷和最值的查找。已排序的列表a有n個整型元素,當條件a[i]==a[i-1]成立時,表示有連續(xù)相等的數(shù)量c精點撥 A 每找到一個相等的值,求解數(shù)量的最大值,并保存此時的索引位置v,若不相等時初始化c的個數(shù)為1B 初始化c的個數(shù)就在兩個不相等的值時C 當兩個數(shù)相等時進行計數(shù),當兩個數(shù)不相等時,進行最值的查找,同時初始c的值為1,但該選項c的初始化發(fā)生在找到最大值時D 若長度的最大值發(fā)生在最后,即該列表最后的幾個數(shù)是長度最大值時,只是在進行計數(shù),并未進行最大值的查找聽課筆記:__________________________________________________________________________________________________________________________________【變式】 水往低處流,下雨時道路上的低洼地(兩邊高中間低的凹處)總會有積水。例如某地面高度數(shù)據(jù)為“0,0,2,1,2,0,0,1”,則該地面有2處低洼地。實現(xiàn)該算法的程序段如下:gd=input(″請輸入地面高度,以空格間隔開:″)h=list(map(int,gd.split(″,″))) #將字符串轉換為列表,例如″1,0,2″,轉換為[1,0,2]cnt=0f=Falsefor i in range(1,len(h)):if ①________:f=Trueelif h[i-1]cnt+=1②________print(″該地面有″,cnt,″處低洼地。″)上述代碼中劃線處應填入的代碼是( )A.①h[i]>h[i+1] ②f=FalseB.①h[i]>h[i+1] ②f=TrueC.①h[i-1]>h[i] ②f=FalseD.①h[i-1]>h[i] ②f=True【例2】 老年機因其較大的按鍵,很適合老年人使用,但其中英文字母的輸入方式比較麻煩,導致很多老年人不太會用。如下圖是一款老年機的鍵盤,其字母的輸入方式如下:(1)若要輸入英文字母“A”,則2鍵按1下;若要輸入“B”,則2鍵按兩下;其他英文字母的輸入方式同理。(2)若連續(xù)輸入的英文字母在同一數(shù)字鍵中,則在輸入下一個英文字母前,需先按下1鍵以表示確定;若連續(xù)輸入的英文字母不在同一數(shù)字鍵中,則不需要按1鍵,直接按所要輸入英文字母對應的數(shù)字鍵即可。(3)若要輸入空格,則按0鍵。王老師依據(jù)該手機的字母輸入規(guī)則,設計了一個Python程序。實現(xiàn)輸入按鍵被點擊的順序,顯示手機中輸入的英文內(nèi)容的功能。程序運行界面如圖所示:實現(xiàn)該功能的程序代碼如下:keyboard={″0″:″ ″,″2″:″ABC″,″3″:″DEF″,″4″:″GHI″,″5″:″JKL″,″6″:″MNO″,″7″:″PQRS″,″8″:″TUV″,″9″:″WXYZ″}yw=input(″輸入按鍵編號順序:″)①________i=1;k=1result=″″while iif yw[i]==key:k=k+1else:if yw[i]==″1″: ②________result+=keyboard[key][k-1]key=y(tǒng)w[i]③________i=i+1result+=keyboard[key][k-1]print(″輸出的內(nèi)容是:″,result)請回答下列問題:(1)若按鍵點擊的順序是“616661666166”,則手機中輸入的英文是________。(2)要實現(xiàn)程序的功能,請完善劃線處的代碼。思維點撥精點撥 (1)若連續(xù)輸入的英文字母在同一數(shù)字鍵中,則在輸入下一個英文字母前,需先按下1鍵以表示確定。6為M,1表示在同一數(shù)字鍵中,666表示O,因此為MOON。(2)①key表示按下的數(shù)字。其初值為yw[0]。②條件yw[i]==″1″成立,表示在同一數(shù)字鍵的分隔符,直接讀取下一個位置的數(shù)字。③在條件yw[i]==key不成立時,將對新的按鍵進行統(tǒng)計,其計數(shù)恢復為1。聽課筆記:_________________________________________________________________________________________________________________________________________________________________________________________________________知識點三 組合問題【知識梳理】1.計算機解決問題的基本思維是枚舉算法,在兩個不同對象中分別枚舉兩個元素,或者在一個對象分別枚舉兩個元素,就形成了________問題。2.兩個不同對象元素個數(shù)分別為m和n,則枚舉的總次數(shù)為________。算法采用雙重循環(huán)描述為for i in range(m):for j in range(n)。3.用一個二維矩陣來描述兩個不同對象元素組合,每種組合可以用矩陣中每個________來表示。4.在一個包含n個元素的對象中取出兩個元素的組合,為了避免數(shù)量重復,往往采用的方法是外循環(huán)從0遍歷到________,內(nèi)循環(huán)從當前位置i后面的元素開始遍歷。算法采用雙重循環(huán)描述為for i in range(n-1):for j in range(i+1,n)。5.用一個二維矩陣來描述一個不同對象不同元素組合,每種組合可以用矩陣中________線右上方的每個單元格來表示。【經(jīng)典案例】從n個不同的元素中,任取m(m≤n)個元素為一組,叫作從n個不同元素中取出m個元素的一個組合。當m為2時,是經(jīng)常要討論的情況,在同一線性結構中,用兩個指針分別移動遍歷。變量i表示第一個數(shù)位置,他的范圍從0至n-2,變量j表示另一個元素的位置,為了兩個數(shù)的重復組合,變量j的范圍從i+1至n-1。當然也可以從后往前遍歷,變量i從n-1至1,變量j從i-1至0,這樣就不會重復了。【例題】 每個人有智商QA和體力QB值,從m個申請人中挑選2人組隊參加某挑戰(zhàn)賽。條件一是2人的智商QA值都必須大于指定參數(shù)h;條件二是2人的體力QA值之差(較大值減較小值)小于h。在滿足上述兩個條件的所有2人組合中,挑選體力QB值之和最大的一個組合,若有多個相同最大的組合一并輸出。(QA、QB和h的值均為正整數(shù))程序運行的界面如圖所示。請輸入?yún)?shù)h:30組隊結果:33 37 36 34組隊結果:33 37 33 34(1)實現(xiàn)上述功能的Python程序如下,請在劃線處填入合適的代碼。(2)程序中加框處代碼有錯,請改正。#讀入qa和qb的值,依次保存在列表中,代碼略ha=int(input(″請輸入?yún)?shù)h:″))imax=0;s=[]n=len(qa)for i in range(n-1):if ①________:continuefor j in range(②________):if ③________: if qb[i]+qb[j]>imax: imax=qb[i]+qb[j] s=[qa[i],qb[i],qa[j],qb[j]] s.append([qa[i],qb[i],qa[j],qb[j]])#輸出最佳組合,代碼略。思維點撥明考向 本題考查數(shù)據(jù)組合及最值查找精點撥 (1)①條件一是2人的QA值都必須大于指定參數(shù)h,continue指略過此次循環(huán),那么應該判斷qa[i]的值。②是一個組合,n個人兩兩組合,變量i表示第1個的位置,索引位置從0至n-2,那么與他后面的人進行組合,不會發(fā)生重復。③條件二是2人的QA值之差(較大值減較小值)小于h,因此需判斷qa[j]是否符合條件一,同時要判斷兩個人的QA值之差是否符合條件。(2)在符合條件中找最值,若有多個最值,則同時添加保存聽課筆記:__________________________________________________________________________________________________________________________________【變式】 某音樂平臺可以為用戶推薦歌曲,推薦歌曲的算法如下:第1步,系統(tǒng)根據(jù)用戶的聽歌行為,使用-2~5進行量化,單曲循環(huán)=5,分享=4,收藏=3,主動播放=2,聽完=1,未聽=0,跳過=-1,拉黑=-2,量化值大于0表示喜歡,建立如圖a數(shù)據(jù)。第2步,分別計算待推薦用戶與其他每位用戶的聽歌相似度(相似度=兩用戶同時喜歡的歌曲數(shù)/兩用戶中至少有一人喜歡的歌曲數(shù))。第3步,分別計算其他用戶對每一首歌曲的推薦度(推薦度=某用戶該歌曲的量化值×兩用戶的相似度)。第4步,在其他用戶所有量化值大于0的歌曲中找到推薦度最高的,且待推薦用戶沒有聽過的歌曲,推薦給該用戶。小明用Python程序模擬了此推薦算法,請回答下列問題。(1)在圖a所示的10首歌曲中,“yigoo”與“l(fā)ucky”兩用戶的相似度為________。(四舍五入保留兩位小數(shù))(2)實現(xiàn)上述功能的Python程序如下,運行結果如圖b所示,請在劃線處填上合適的代碼。圖bdef find(name,user):#代碼略def simalar(music,data,k): #計算相似度xsd=[0]*len(data)for i in range(len(data)):ms1=ms2=0for j in range(len(music)): if k!=i: if data[k][j]>0 and data[i][j]>0: ms1+=1 if ①________: ms2+=1if ms2>0: xsd[i]=ms1/ms2return xsdmusic=[″《孤勇者》″,″《Hug me》″,″《后會無期》″,″《NUNA》″,″《蝸牛》″,″《心墻》″,″《對你說》″,″《與天齊》″,″《梔子花開》″,″《風吹半夏》″]user=[″HelloK″,″sime32″,″yigoo″,″lucky″,″halibo″,″baby″,″HaiT″,″bao_66″]#讀取聽歌數(shù)據(jù)文件存入data列表,如圖c所示[[0,4,2,0,0,1,-1,3,0], [2,0,0,1,0,0,0,0,0,4], …… [3,0,0,0,0,1,0,0,0,1], [-1,0,1,0,0,-2,3,0,0,2]]圖cname=input(″請輸入您的用戶名:″)k=find(name,user) #調(diào)用find函數(shù)返回該用戶在data列表中的索引號xsd=simalar(music,data,k) #xsd[0]表示0號用戶與k號待推薦用戶的相似度maxm=0for i in range(len(data)):for j in range(len(music)):if data[k][j]==0 and data[i][j]>0: like=②________ if like>maxm: maxm=like p=jprint(″為您推薦的歌曲是:″,③________)綜合題 簡單算法【經(jīng)典案例】【例題】 某物品柜有5層,每層有10個格子,每個格子只能放一個物品。輸入一組物品的高度值(按降序排列),將這些物品放在同一層的連續(xù)格子中。第一步:查找存放物品的格子。從第1層開始查找,若該層物品柜連續(xù)空格數(shù)量小于物品數(shù)量,則查找下一層。查找5層后還是不能找到連續(xù)存放位置,輸出“不能連續(xù)存放”。若在某一層中找到符合要求的連續(xù)空格子,則進行第二步:將物品按中間高兩端低的原則存放物品。先將高度最高的物品存放在連續(xù)空格的中間位置(若空格數(shù)量為偶數(shù),則放在中間靠左位置),接著依次將物品按先右后左的順序依次存放。如輸入物品高度為8,5,2,1,則依次放在第1排的第5,6,4,7的位置。第一排各個格子存放物品高度如圖所示,其中0表示未存放物品。0 0 0 2 8 5 1 0 0 0(1)輸入第1組物品高度依次為8,5,2,第2組依次為9,6,3,1,則高度為3的物品存放在第1排第________(填數(shù)字)個格子中。(2)實現(xiàn)該功能的Python程序段如下,將空白處填寫完整。#將已經(jīng)存放的物品高度存儲在數(shù)組a中,如:[[0,9,6,2,8,5,1,0,0,0],[0,0,1,7,10,9,2,0,0,0],……],代碼略。s=input(″輸入一組降序的物品高度,用逗號分開:″)wp=list(map(int,s.split(″,″))) #輸入的數(shù)字轉換成列表flag=Falsei=0while i <5 and not flag:beg=0for j in range(10): if a[i][j]==0: #物品柜格子為0表示沒有存放物品 if j-beg+1>=len(wp): hang=i end=j flag=Trueelse: if flag: break ①________i+=1if flag:②________a[hang][wz]=wp[0]i=1while iif ③________: wz-=ielse: wz+=ia[hang][wz]=wp[i]i+=1else:print(″不能連續(xù)存放″)#輸出物品柜的存放情況,代碼略思維點撥明考向 本題考查二維數(shù)組的遍歷和在一個序列中查找最值精點撥 (1)高度8,5,2依次存放第5、6、4的格子中,因此左邊還有3個空格,右邊有4個空格。高度9,6,3,1依次存放第8、9、7、10的格子中。(2)①確定連續(xù)空格子的最左邊位置beg,若格子為空,計算連續(xù)空格子數(shù)量為j-beg+1,若數(shù)量達到存放物品數(shù)量時,將flag設置為True。若格子不為空,則下一個空格子的位置只能在當前j的下一個位置。②中間位置的計算方法類似于二分查找,將左右位置相加再整除以2。③語句a[hang][wz]=wp[0]的功能是放置最中間的物品,接下來放在i為1的物品,在中間的右邊,即wz等于i+1,當i的值為2時,放在左邊的前面2個位置中,因此通過判斷變量i的奇偶性來決定存放的位置。聽課筆記:___________________________________________________________________________________________________________________________________【變式1】 某智能貨架有一排貨位,貨位號從0開始編號,每個貨位等寬。貨架上可放置不同寬度(占1~3個貨位)的箱子,箱子從左往右連續(xù)相鄰擺放。每次放置箱子時,只能在貨架上最后一個箱子的右側放置新箱子。可以搬離中間的某個箱子,但該箱右側所有箱子被自動左移。編寫程序,模擬搬離或放置操作,操作結束后,輸出當前貨架上所有箱子的起始位置。(1)若貨架有5個箱子,狀態(tài)如圖所示,搬離第2個箱子后,當前貨架上最后一個箱子的起始位置是________。(2)實現(xiàn)上述功能的部分Python程序如下,請在劃線處填入合適的代碼。#共有n個箱子供操作,代碼略lst=[-1]*nst=m=0while True:″操作序列如[″P1″, ″M0″,……., ″E″],依次讀取序列元素,存入變量 op,″P1″表示放置寬度為 1 的箱子,″M0″表示搬離第 1 個箱子,代碼略″'if op[0]==″P″:w=int(op[1:]) #表示箱子的寬度為wlst[m]=stst=st+w①________elif op[0]==″M″:i=int(op[1:]) #表示第i+1個箱子將被搬離if lst[i+1]!=-1: #計算移動的距離 dis=②________else: dis=st-lst[i]while lst[i+1]!=-1: lst[i]=lst[i+1]-dis i=i+1lst[i]=-1st=③________m=m-1else:break#輸出當前貨架上所有箱子的起始位置,代碼略【變式2】 實現(xiàn)【變式1】功能的程序代碼還可以如#共有n個箱子供操作,代碼略lst=[-1]*nwd=[0]*nst=m=0while True:″操作序列如[″P1″, ″M0″,…….,″E″],依次讀取序列元素,存入變量op,″P1″表示放置寬度為1的箱子,″M0″表示搬離第1個箱子,代碼略″if op[0]==″P″:w=int(op[1:]) #表示箱子的寬度為wlst[m]=st①________st=st+wm+=1elif op[0]==″M″:i=int(op[1:]) #表示第i+1個箱子將被搬離t=wd[i]while : ②________ wd[i]=wd[i+1] i=i+1③________st=st-t m=m-1else:break#輸出當前貨架上所有箱子的起始位置,代碼略(1)將程序空白處填寫完整。(2)實現(xiàn)加框處功能的語句還可以是__________。1.有如下Python程序段:s=″Student Union!″f=[0]*26i=0while iprint(s[i])if ″a″<=s[i]<=″z″:f[ord(s[i])-ord(″a″)]+=1elif ″A″<=s[i]<=″Z″:i+=1continueelse:breaki+=1for i in range(26):if f[i]==1:print(chr(i+ord(″A″)),end=″″)執(zhí)行該程序段,輸出結果為( )A.DENU B.DENTUC.DEIOU D.denu2.某Python程序段如下:x=input(″請輸入字符串:″)i=0;j=len(x)-1while ii+=1j-=1print(i,j)程序運行后,輸入字符串“123421″,輸出的結果是( )A.2 3 B.3 4C.3 2 D.4 33.某Python程序段如下:a=[10,20,25,37,45,48,50]p=1for j in range(2,len(a)):if a[j]-a[j-1]>a[p]-a[p-1]:p=jans=a[p]-a[p-1]print(ans)該程序?qū)崿F(xiàn)的功能是( )A.求a中的最小值 B.求a中的最大值C.求a中相鄰元素差值的最小值 D.求a中相鄰元素差值的最大值4.某密碼強度判斷程序功能如下:將密碼字符分為大寫字母、小寫字母、數(shù)字字符以及其他符號四種類型。輸入一串密碼字符,如果該字符串的長度小于8,則輸出“密碼長度不符合要求!”;若該字符串包含三種字符及以上,則輸出“強度:強”;若該字符串包含兩種字符,則輸出“強度:中”;若該字符串僅包含一種字符,則輸出“強度:弱”。(1)請在劃線處填入合適的代碼。r=[0]*4;sum=0s=input(″輸入密碼:″)①________if n<8:print(″密碼長度不符合要求!″);else:for ②________:ch=s[i]if ch>=″a″ and ch<=″z″: r[0]=1elif ch>=″A″ and ch<=″Z″: r[1]=1 ③________: r[2]=1else: r[3]=1sum=r[0]+r[1]+r[2]+r[3]if sum>=3: print(″強度:強″)elif ④________: print(″強度:中″)else: print(″強度:弱″)(2)若輸入的密碼字符串為“Assd?237”,則輸出的結果為________。5.中華人民共和國居民身份證號碼共18位,其中前17位為數(shù)字本體碼,第18位為校驗碼。作為尾號的校驗碼,是按統(tǒng)一的公式計算出來的,校驗碼的計算方法為:(1)將身份證前17位分別乘以不同的系數(shù),系數(shù)依次為7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2;(2)將這17位數(shù)字和系數(shù)相乘的結果相加;(3)求用上述相加的和除以11的余數(shù);(4)余數(shù)只可能有0,1,2…9,10共11個數(shù)字,分別對應校驗碼1,0,X,9,8,7,6,5,4,3,2。例如:身份證號34052419800101001X,計算3*7+4*9+0*10+5*5+…+1*2=189,用189除以11得出余數(shù)2,對應的校驗碼是X。編寫Python程序,判斷輸入的身份證號碼的校驗碼是否正確,正確輸出“Yes”,否則輸出“No”,請在劃線處填入合適代碼。def judge(s):v=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2] #系數(shù)m='10X98765432' #余數(shù)對應的校驗碼①________if n!=18:return Falseres=0for i in range(n-1):②________res=res%11code=m[res]if ③________:return Trueelse:return Falses=input(輸入身份證號碼:')if ④________:print('Yes')else:print('No')6.有如下Python程序代碼,程序執(zhí)行輸出結果是( )list=[4,7,8,1,2,6]s=0for a in range(1,len(list)):if list[a]s+=1else:s-=2print(s)A.3 B.4C.-7 D.-37.有如下python程序段:a=[2,3,5,9,17,30]k=0for i in range(1,len(a)-1): if(a[i]-a[i-1])/a[i-1]<(a[i+1]-a[i])/a[i]:k+=1該程序段運行后,k的值為( )A.1 B.2C.3 D.48.某Python程序段的功能是尋找列表中最先出現(xiàn)的最長連續(xù)升序段,代碼如下:a=[2,5,7,6,13,4,7,8,10,9]#列表a中的元素均為正整數(shù)a.append(-1)b=[a[0]]maxn=1;count=1for i in range(1,len(a)):if ____(1)____:count+=1else:if count>maxn: maxn=count b=a[i-count:i] ____(2)____print(b)劃線處(1)(2)應填入的代碼是:①a[i]a[i-1] ③count=1 ④count=0其中正確的選項為( )A.①③ B.①④C.②③ D.②④9.有如下Python程序段:s=input(″請輸入字符串:″)i=0;j=1;t=0;s1=″″;maxs=″″while iif s[i]<=s[i+1]: j+=1s1=s[t:t+j]if len(maxs)<=len(s1): maxs=s1else:s1=″″t=i+1j=1i+=1print(maxs)執(zhí)行該程序,當輸入“p8579yt559h6”時,輸出的結果為( )A.579 B.579yC.559h D.t559h10.編寫程序?qū)崿F(xiàn)如下功能:統(tǒng)計某醫(yī)院兒科100天中連續(xù)7天的日就診人數(shù)最大差值,即任意連續(xù)7天內(nèi)的就診人數(shù)最多日與最少日的人數(shù)之差。實現(xiàn)上述功能的Python程序如下,請回答下列問題:(1)100天內(nèi)某時間段的連續(xù)7天的日就診人數(shù)為″15,26,55,39,16,51,23,19,58,51″,則該時間段內(nèi)連續(xù)7天日就診人數(shù)的最大差值為________________。(2)請在程序劃線處填入合適的代碼。#列表a中存儲了100天的日就診人數(shù),代碼略ans=-1for p in range(0,94):i=p①________minrs=min(a[i:j])maxrs=max(a[i:j])if ②________:ans=maxrs-minrsprint(″連續(xù) 7 天日就診人數(shù)最大差值為:″,ans)11.海面波浪實際上是各種不同波高、周期、行進方向的多種波的無規(guī)則組合。為了海洋工程設計的方便,實際工程中常采用具有某種統(tǒng)計特征值的波作為代表波,其中有效波(三分之一大波)應用較為廣泛。將任一由n個波浪組成的波群的波高由大到小依次排列,其中前面n/3個波的平均波高即為有效波高。編寫Python程序,實現(xiàn)有效波高的計算,結果四舍五入保留兩位小數(shù)并輸出,程序運行結果如圖所示:請輸入波群(m):1.05,2.06,1.99,0.98,0.65,1.92,1.04,2.03,0.78,2.67有效波高(m):2.25請在劃線處填入合適的代碼。s=input(″請輸入波群(m)″)a=[]s=s+″,″①________for j in range(len(s)):if s[j]==″,″:t=float(s[i:j])a.append(t) #append 方法用于在列表末尾添加新元素②________a.sort(reverse=True) #將a列表中的元素從大到小排列sumbg=0for k in range(len(a)//3):sumbg=sumbg+a[k]③________print(″有效波高(m):″,aver)12.輸入一個嵌套列表,嵌套層次不限,根據(jù)層次求列表元素的加權和。第一層每個元素的值為:元素值*1,第二層每個元素的值為:元素值*2,第三層每個元素的值為:元素值*3, …,運行程序如圖所示。請回答以下問題(1)輸入列表[[[1,-2,3]]],輸出結果是________。(2)請在劃線①②③④處填入合適的代碼。s=input(″請輸入列表:″)count=ans=0flag=1①________while iif s[i]==″[″:count+=1elif s[i]==″]″:count -=1elif s[i]==″-″:②________elif ″9″>=s[i]>=″0″:j=inum=0while ″9″>=s[j]>=″0″: num=③________ j+=1④________ans=ans+count*num*flagflag=1i+=1print(″輸出結果:″,ans)13.機器人從原點(0,0)開始在平面中移動。機器人只能通過用戶給定的指令UP向上,DOWN向下,LEFT向左和RIGHT向右移動。如機器人收到的運動指令向上5步,向下3步,向左3步,向右2步,按回車鍵結束指令輸入,程序運行界面如圖所示:請輸入方向和步數(shù) ,隔開UP,5 ,隔開DOWN,3 ,隔開LEFT,3 ,隔開RIGHT,2 ,隔開 經(jīng)過4個指令 機器人距離原點2.24左側為運動方向,右側數(shù)字為前進步數(shù)。請編寫一個程序,計算經(jīng)過一系列運動之后,機器人當前位置離開原點的距離(四舍五入保留兩位小數(shù))。(1)若輸入的指令依次為UP,2;RIGHT,4;DOWN,5和回車鍵,則機器人當前位置離開原點的距離是________。(2)請把下面的代碼補充完整。pos=[0,0]n=0print(″請輸入方向和步數(shù)″)while True:s=input(″,隔開″)if len(s)==0: #按回車結束運行break①________movement=s.split(',')#用于字符串分割的常用方法。如:'a#b#c'split( # )結果為['a','b','c']direction=movement[0]②________if direction==″UP″:pos[1]+=stepselif direction==″DOWN″:pos[1]-=steps③________:pos[0]-=stepselif direction==″RIGHT″:pos[0]+=stepsprint('經(jīng)過'+ str(n) +″個指令″)print(″機器人距離原點″,④________14.上城小學將在本學期開展趣味運動會,一(10)班的班主任邀請你為他們設計一個Python程序,用于挑選參加集體項目的選手。挑選規(guī)則為:當班級有足夠候選人員時,進行隨機挑選,并輸出人員名單;若無足夠人員時,提示“無足夠候選人員參加比賽!”,并規(guī)定每個學生最多參加一個集體項目。程序要求用戶按照規(guī)范輸入比賽項目及相關人員要求,例如輸入“投籃:8,2”即籃球項目要求男生8人,女生2人。該程序的運行效果如圖所示:請輸入比賽項目及相關人員要求:跳繩:5,5;趕豬:15,15;投籃:8,2 跳繩項目: 男:艾震宇 蔡溫淼 葉埕奇 何夫 王子碩 女:王曉清 黃鑫櫞 陳佳妮 陳昱彤 陳奕臻 趕豬項目: 無足夠候選人員參加比賽! 投籃項目: 男:陳展驄 李俊翰 張子俊 劉泓成 胡海偉 王子涵 葉賽特 伍越 女:賈熙 錢梓涵(1)實現(xiàn)挑選集體項目選手的Python代碼如下,請在劃線處填入合適代碼。(2)程序加框處代碼有誤,請改正。from random import shuffledef disp(inf):#將輸入的字符串整理為指定格式,當輸入字符串為″跳繩:10,10;投籃:8,2″,則將其調(diào)整為{″跳繩″: [10, 10], ″投籃″:[8, 2]}并返回。def player(x,n):for p in range(len(x)):if p>=n: ①________print(x[p],end=″ ″)return x[n:]c=[[″陳浩琦″, ″男″],[″王慧敏″, ″女″], [″王子涵″, ″男″],…] #班級學生名單ctemp=[[],[]]for ②________ in c:if p[1]==″男″:ctemp[0].append(p[0]) #append()函數(shù)的功能為在列表末尾插入新元素else:ctemp[1].append(p[0])inf=input(″請輸入比賽項目及相關人員要求:″)s=[″男″,″女″]sj=disp(inf)for t in sj: #變量遍歷字典中的每個鍵if sj[t][0]<=len(ctemp[0]) and sj[t][1]<=len(ctemp[1]):print(t+″項目: ″)for i in ③________: print(s[i],end=″:″) shuffle(ctemp[i]) #shuffle 用于將序列的所有元素進行隨機排序 print()else:print(t+″項目:\\n無足夠候選人員參加比賽!″)15.不同的兩個單詞或短語,字母異位詞指的是由相同的字母組成且不區(qū)分大小寫,但字母位置不同,比如″Heart″和″earth″是字母異位詞,″Apple″和″Paper″不是字母異位詞。現(xiàn)編寫Python程序,文本文件“word.txt”中保存著若干對單詞組,從文件“word.txt”中讀取多對單詞組,并判斷該組中兩個單詞是否為字母異位詞。(1)請在劃線處填入合適的代碼。def change(x): #將字母都轉換為小寫字母for k in x:if ″A″<=k<=″Z″: k=①________ y+=kreturn ydef fs(m, n):cnt=[0]*26for i in range(len(m)) :ch=ord(m[i])②________for i in range(len(n)) :ch=ord(n[i])cnt[ch-ord(″a″)]-=1return cntfile=open(″words.txt″,″r″) #以只讀的方式打開文件text=[];s1=s2=″″line=file.readline() #從文件中讀取一行while line: #當line非空(從文件中讀取到數(shù)據(jù))line=line.strip() #把末尾的’\\n’去掉text.append(line.split()) #方法是把空白字符去掉,把ine變成包含 2 個單詞列表line=file.readline()file.close()③________for i in range(num) :s1=text[i][0]s2=text[i][1]c=④__________j=0while jif c[j]!=0: print(sl,″和″,s2,″不是字母異位詞″) breakj+=1else:#在循環(huán)正常結束后執(zhí)行print(s1,″和″,s2,″是字母異位詞″)(2)下列程序代碼中,加框處的語句________(選填:能/不能)改寫成語句elif ″a″<=k<=″z″:專題6 簡單算法及程序?qū)崿F(xiàn)知識點一知識梳理1.因素 建模 2.前提 3.可能 判斷 4.枚舉 篩選 5.范圍經(jīng)典案例例1 (1)2或兩 (2)①elif t==″B″ 或elif t==″B″或elif t==″'″或elif (t=='B') ②cnt1-=w或cnt1=cnt1-w ③i+=1或i=i+1變式1 D [本題考查數(shù)組的遍歷。依次遍歷字符串中數(shù)字,若是數(shù)字,向后循環(huán)后移3個,若是小寫字母,轉換成相應的大寫字母,其他字符(逗號和大寫字母)不處理。]例2 (1)pos[0]或bp (2)[x,y] (3)int(line[1]) (4)new_pos[1]=pos[1]+y*lg (5)p=p+1變式2 (1)B (2)lst (3)result=10-val % 10 (4)money=money+lst1[i][1]*lst1[i][2]或money+=lst1[i][1]*lst1[i][2]解析 (1)若輸入opt的值為4,模擬程序運行過程,將選擇else分支,此時輸出內(nèi)容為“操作結束”。(2)readfile函數(shù)將讀取csv文件內(nèi)容,同時將文件內(nèi)容存儲到列表lst中,最后返回lst列表。(3)依據(jù)算法中第③步描述,該算法步驟實現(xiàn)語句為:result=10-val % 10。(4)根據(jù)lst1[i]中存儲的圖書信息,找到對應圖書數(shù)量(lst1[i][1])和單價(元)(lst1[i][2]),然后計算該出版社總費用,同時累加到變量money中。知識點二知識梳理1.i-1 i+1 2.n-1 3.單個 4.字母 子序列 5.長度 6.開始經(jīng)典案例例1 A變式 C [本題考查在一個序列中查找一個下降子序列。flag是下降段的標志,從索引1開始遍歷,若他比他前面的數(shù)小,表示處理下降段,將flag置為True。在下降過程中,若他比他前面的數(shù)大,表示從該位置開始處理上升段,因此將增加一個下降段,同時將標志設置為False。]例2 (1)MOON (2)①key=y(tǒng)w[0] ②i=i+1 ③k=1知識點三知識梳理1.組合 2.m*n 3.單元格 4.n-2 5.主對角經(jīng)典案例例題 (1) ①qa[i]<=ha ②i+1,n ③qa[j]>ha and abs(qa[i]-qa[j])變式 (1)0.33 (2)①data[k][j]>0 or data[i][j]>0 ②xsd[i]*data[i][j] ③music[p]解析 本題考查二維數(shù)組中數(shù)據(jù)元素和數(shù)據(jù)項的遍歷。(1)相似度=兩用戶同時喜歡的歌曲數(shù)/兩用戶中至少有一人喜歡的歌曲數(shù),因此為2/6。(2)①ms2表示兩用戶中至少有一人喜歡的歌曲數(shù)。②推薦度=某用戶該歌曲的量化值×兩用戶的相似度。③在最大值查找過程中,p中推薦度最大歌曲的索引號,因此推薦的歌曲是music[p]。綜合題經(jīng)典案例例題 (1)7 (2)①beg=j+1 ②wz=(beg+end)//2 ③i%2==0變式1 (1)5 (2)①m=m+1 ②lst[i + 1]-lst[i] ③st-dis解析 本題考查列表的遍歷和數(shù)據(jù)的移動。(1)搬離第2個箱子,每個箱子向左移動3個單位,因此起始位置為5。(2)①從語句lst[m]=st和st=st+w來看,m表示箱子索引號,st表示起始位置,起始位置每次增加箱子長度,因此箱子索引也要增加。②計算移動距離,條件lst[i+1] !=-1表示后面還有箱子,因此移出箱子的距離為前后兩個箱子起始位置的差值。③語句lst[i]=-1更新最后一個箱子往前移動后,少了一個箱子,因此起始位置也要相應往前移動。變式2 (1)①wd[m]=w ② lst[i]=lst[i+1]-t ③lst[i]=-1或lst[m-1]=-1 (2)i解析 本題考查列表的遍歷和數(shù)據(jù)的移動。(1)①記錄當前放置箱子的寬度。②將后面所有箱子向左移動,每個箱子的開始放置位置也要發(fā)生變動,后一個箱子的開始位置就是當前箱子的結束位置,將該位置減去移動箱子的寬度,就是移動的距離。③將第m個箱子移動后,該位置初始值設置為-1。(2)一共有m個箱子,最后一個箱子的索引為m-1。當堂過關檢測1.A [continue忽略該語句下方語句,進入下一輪循環(huán)。break是終止循環(huán)。因此只遍歷到″Student″,uden的字符數(shù)量為1,經(jīng)過從小到大并轉化為大寫輸出后為DENU。]2.A [從首尾兩端遍歷字符串,若相等則繼續(xù),當檢測到“34″不相等,索引位置在2和3。]3.D [表達式a[p]-a[p-1]表示相鄰元素差值。p初值為1,第1個相鄰元素差值的位置,再依次枚舉相鄰元素差值的最大值。]4.(1)①n=len(s) ②i in range(len(s)) ③elif ″0″<=ch<=″9″ ④sum==2 (2)強度:強解析 (1)①在條件n<8中沒有對n進行定義。②下面語句為ch=s[i],變量i沒有定義。③第3種情況是判斷是否是數(shù)字。④有兩種類別,強度為中。(2)有4種類型的字符。5.①n=len(s) ②res+=int(s[i])*v[i] ③code==s[-1] ④judge(s)==True或judge(s)解析 自定義函數(shù)judge用于判斷輸入身份證號碼s是否合法,若合法返回True。①處下方語句if n!=18,因此該處肯定與n有關。②將這17位數(shù)字和系數(shù)相乘的結果相加并存儲到res中。③執(zhí)行語句res=res%11后,求用上述相加的和除以11的余數(shù);code對應校驗碼,若計算出來的校驗碼與身份證號碼是最后一位相同,則表示身份證有效。④調(diào)用自定義函數(shù)并判斷輸入的號碼是否合法。6.C [從索引1開始,比前面數(shù)小,加1,否則減去2。比前面小的數(shù)對有8和1,因此4對數(shù)比前面數(shù)大。]7.C [依次比較的條件為(3-2)/2<(5-3)/3、(5-3)/3<(9-5)/5、(9-5)/5<(17-9)/9、(17-9)/9<(30-17)/17,最后一個條件不成立,成立的條件有3個。]8.C [本題考查枚舉算法。查找一個最長連續(xù)升序段,從索引位置1開始,與他前面的數(shù)進行比較,若大于前面的數(shù),表示還處在升序段中,否則i-1才是升序段的結束位置,索引位置i是下一段的開始位置,下一段中已經(jīng)有一個元素,因此count的值為1。]9.C [程序功能在一個序列中查找最長的遞增子序列。]10.(1)43 (2)①j=i+7或j=p+7 ②maxrs-minrs>ans解析 本題綜合考查了循環(huán)結構和最值的應用。(1)按照題意,找出七天里人數(shù)最多為58,最少為15,因此差值最大為43。(2)①每七天中選擇人數(shù)最多的一天一級人數(shù)最少的一天,因此步長可以設置為7,可以表示為j=i+7或j=p+7。②如果if后條件表達式成立,則更新ans的值為ans=maxrs-minrs,因此if后條件表達式應為找到了更大的差值,即maxrs-minrs>ans。11.①i=0 ②i=j+1 ③aver=round(sumbg/(k+1),2)或aver=round(sumbg/(len(a)//3),2)或aver=int(sumbg/(k+1)*100+0.5)/100或aver=int(sumbg/(len(a)//3)*100+0.5)/100或其它等價答案解析 ①在語句t=float(s[i:j])中,變量i是字符切片的初始位置,其初值應為0。②當條件s[j]==″,″成立時,表示找到一個數(shù)字串,下個數(shù)字串的起始位置為j+1。③前面n/3個波的平均波高即為有效波高。12.(1)6 (2)①i=0 ②flag=-1 ③num*10+int(s[j]) ④i=j-113.(1)5 (2)①n+=1 ②steps=int(movement[1])③elif direction==″LEFT″ ④round((pos[0]**2+pos[1]**2)**0.5,2)14.(1)①break ②p ③range(len(ctemp))或range(2) (2)ctemp[i]=player(ctemp[i],sj[t][i])15.(1)①chr(ord(k)+32)或chr(ord(k)+ord(″A″)-ord(″a″))或k.lower() ②cnt[ch-ord(a″)]+=1或cnt[ch-97]+=1 ③num=len(text) ④fs(change(s1),change(s2))或fs(change(s2),change(s1)) (2)不能 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫