中文字幕精品无码一区二区,成全视频在线播放观看方法,大伊人青草狠狠久久,亚洲一区影音先锋色资源

2025屆信息技術一輪復習講義:專題6 簡單算法及程序?qū)崿F(xiàn)

資源下載
  1. 二一教育資源

2025屆信息技術一輪復習講義:專題6 簡單算法及程序?qū)崿F(xiàn)

資源簡介

專題6 簡單算法及程序?qū)崿F(xiàn)
學業(yè)要求 知 識 點 學業(yè)水平等級
1.掌握解析算法、枚舉算法的算法特征,并會用計算機程序?qū)崿F(xiàn)這兩種算法 2
2.掌握程序調(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 放置 5
A 放置 2,3
B 放置 0
A 放置 7,8
A 搬離 2,3
(1)若n為10,開始時貨位全空,經(jīng)過如圖所示的放置或搬離操作后,不移動已放置箱子的情況下,還可放置A型箱子的最多數(shù)量為________個。
(2)實現(xiàn)上述功能的部分Python程序如下,請在劃線處填入合適的代碼。
#讀取貨位總數(shù)存入n,代碼略。
cnt1=n
lst=[0]*n #貨位狀態(tài),0表示對應的貨位為空
while True:
#讀取本次已描述數(shù)據(jù):箱子類型、操作類型、貨位編號起始值存入t,d和s,代碼略
if t==″A″:
w=2
①________:
w=1
else: #不是″A″或″B″時退出循環(huán)
break
if d==″P″: #d為P時表示放置,否則表示搬離
②________
else:
cnt1+=w
lst[s]=1-lst[s]
if t==″A″:
lst[s+1]=1-lst[s+1]
i,cnt2=0,0
while iif lst[i]==0 and lst[i+1]==0:
     ③________
     cnt2+=1
i+=1
print(″當前空貨位數(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+c
print (s2)
程序運行后,輸入“9790,JiaYou″,輸出的結果是(  )
A.6467,jiayou B.6467,JIAYOU
C.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 csv
f=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=1
elif dr==″D″:
x=0;y=-1
elif dr==″L″:
x=-1;y=0
elif dr==″R″:
x=1;y=0
new_pos[0]=pos[0]+x*lg
______________
return new_pos
(5)編寫函數(shù)gettimes(),計算剩余移動次數(shù)。代碼如下:
def gettimes(p1,p2):
p=abs(p1-p2)//5
if 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 pd
def 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=3
for 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 True
else:
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=0
for 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,0
for i in range(1,n):
print(a[v])
A.if a[i]==a[i-1]:
c+=1
if c>m:
m=c
v=i
else:
c=1
B.if a[i]==a[i-1]:
c+=1
if c>m:
m=c
v=i
else:
c=1
C.if a[i]==a[i-1]:
c+=1
else:
if c>m:
m=c
v=i-1
c=1
D.if a[i]==a[i-1]:
c+=1
else:
if c>m:
m=c
v=i-1
c=1
思維點撥
明考向 本題考查一維列表的遍歷和最值的查找。已排序的列表a有n個整型元素,當條件a[i]==a[i-1]成立時,表示有連續(xù)相等的數(shù)量c
精點撥 A 每找到一個相等的值,求解數(shù)量的最大值,并保存此時的索引位置v,若不相等時初始化c的個數(shù)為1
B 初始化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=0
f=False
for i in range(1,len(h)):
if ①________:
f=True
elif h[i-1]cnt+=1
②________
print(″該地面有″,cnt,″處低洼地。″)
上述代碼中劃線處應填入的代碼是(  )
A.①h[i]>h[i+1]  ②f=False
B.①h[i]>h[i+1]  ②f=True
C.①h[i-1]>h[i]  ②f=False
D.①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=1
result=″″
while iif yw[i]==key:
k=k+1
else:
if yw[i]==″1″:
     ②________
result+=keyboard[key][k-1]
key=y(tǒng)w[i]
③________
i=i+1
result+=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 ①________:
continue
for 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所示,請在劃線處填上合適的代碼。
圖b
def find(name,user):
#代碼略
def simalar(music,data,k): #計算相似度
xsd=[0]*len(data)
for i in range(len(data)):
ms1=ms2=0
for j in range(len(music)):
     if k!=i:
       if data[k][j]>0 and data[i][j]>0:
         ms1+=1
      if ①________:
        ms2+=1
if ms2>0:
     xsd[i]=ms1/ms2
return xsd
music=[″《孤勇者》″,″《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]]
圖c
name=input(″請輸入您的用戶名:″)
k=find(name,user)   #調(diào)用find函數(shù)返回該用戶在data列表中的索引號
xsd=simalar(music,data,k) #xsd[0]表示0號用戶與k號待推薦用戶的相似度
maxm=0
for 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=j
print(″為您推薦的歌曲是:″,③________)
綜合題 簡單算法
【經(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=False
i=0
while i <5 and not flag:
beg=0
for j in range(10):
  if a[i][j]==0: #物品柜格子為0表示沒有存放物品
   if j-beg+1>=len(wp):
     hang=i
    end=j
     flag=True
else:
     if flag:
       break
    ①________
i+=1
if flag:
②________
a[hang][wz]=wp[0]
i=1
while iif ③________:
     wz-=i
else:
     wz+=i
a[hang][wz]=wp[i]
i+=1
else:
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]*n
st=m=0
while True:
″操作序列如[″P1″, ″M0″,……., ″E″],依次讀取序列元素,存入變量 op,″P1″表示放置寬度為 1 的箱子,″M0″表示搬離第 1 個箱子,代碼略″'
if op[0]==″P″:
w=int(op[1:]) #表示箱子的寬度為w
lst[m]=st
st=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+1
lst[i]=-1
st=③________
m=m-1
else:
break
#輸出當前貨架上所有箱子的起始位置,代碼略
【變式2】 實現(xiàn)【變式1】功能的程序代碼還可以如
#共有n個箱子供操作,代碼略
lst=[-1]*n
wd=[0]*n
st=m=0
while True:
″操作序列如[″P1″, ″M0″,…….,″E″],依次讀取序列元素,存入變量op,″P1″表示放置寬度為1的箱子,″M0″表示搬離第1個箱子,代碼略″
if op[0]==″P″:
w=int(op[1:]) #表示箱子的寬度為w
lst[m]=st
①________
st=st+w
m+=1
elif 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-1
else:
break
#輸出當前貨架上所有箱子的起始位置,代碼略
(1)將程序空白處填寫完整。
(2)實現(xiàn)加框處功能的語句還可以是__________。
1.有如下Python程序段:
s=″Student Union!″
f=[0]*26
i=0
while iprint(s[i])
if ″a″<=s[i]<=″z″:
f[ord(s[i])-ord(″a″)]+=1
elif ″A″<=s[i]<=″Z″:
i+=1
continue
else:
break
i+=1
for i in range(26):
if f[i]==1:
print(chr(i+ord(″A″)),end=″″)
執(zhí)行該程序段,輸出結果為(  )
A.DENU B.DENTU
C.DEIOU D.denu
2.某Python程序段如下:
x=input(″請輸入字符串:″)
i=0;j=len(x)-1
while ii+=1
j-=1
print(i,j)
程序運行后,輸入字符串“123421″,輸出的結果是(  )
A.2 3 B.3 4
C.3 2 D.4 3
3.某Python程序段如下:
a=[10,20,25,37,45,48,50]
p=1
for j in range(2,len(a)):
if a[j]-a[j-1]>a[p]-a[p-1]:
p=j
ans=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=0
s=input(″輸入密碼:″)
①________
if n<8:
print(″密碼長度不符合要求!″);
else:
for ②________:
ch=s[i]
if ch>=″a″ and ch<=″z″:
     r[0]=1
elif ch>=″A″ and ch<=″Z″:
     r[1]=1
   ③________:
     r[2]=1
else:
     r[3]=1
sum=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 False
res=0
for i in range(n-1):
②________
res=res%11
code=m[res]
if ③________:
return True
else:
return False
s=input(輸入身份證號碼:')
if ④________:
print('Yes')
else:
print('No')
6.有如下Python程序代碼,程序執(zhí)行輸出結果是(  )
list=[4,7,8,1,2,6]
s=0
for a in range(1,len(list)):
if list[a]s+=1
else:
s-=2
print(s)
A.3 B.4
C.-7 D.-3
7.有如下python程序段:
a=[2,3,5,9,17,30]
k=0
for 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.2
C.3 D.4
8.某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=1
for i in range(1,len(a)):
if ____(1)____:
count+=1
else:
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+=1
s1=s[t:t+j]
if len(maxs)<=len(s1):
  maxs=s1
else:
s1=″″
t=i+1
j=1
i+=1
print(maxs)
執(zhí)行該程序,當輸入“p8579yt559h6”時,輸出的結果為(  )
A.579 B.579y
C.559h D.t559h
10.編寫程序?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=-1
for p in range(0,94):
i=p
①________
minrs=min(a[i:j])
maxrs=max(a[i:j])
if ②________:
ans=maxrs-minrs
print(″連續(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=0
for 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=0
flag=1
①________
while iif s[i]==″[″:
count+=1
elif s[i]==″]″:
count -=1
elif s[i]==″-″:
②________
elif ″9″>=s[i]>=″0″:
j=i
num=0
while ″9″>=s[j]>=″0″:
     num=③________
    j+=1
④________
ans=ans+count*num*flag
flag=1
i+=1
print(″輸出結果:″,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=0
print(″請輸入方向和步數(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]+=steps
elif direction==″DOWN″:
pos[1]-=steps
③________:
pos[0]-=steps
elif direction==″RIGHT″:
pos[0]+=steps
print('經(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 shuffle
def 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+=k
return y
def fs(m, n):
cnt=[0]*26
for i in range(len(m)) :
ch=ord(m[i])
②________
for i in range(len(n)) :
ch=ord(n[i])
cnt[ch-ord(″a″)]-=1
return cnt
file=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=0
while jif c[j]!=0:
    print(sl,″和″,s2,″不是字母異位詞″)
     break
j+=1
else:#在循環(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-1
13.(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)不能

展開更多......

收起↑

資源預覽

<pre id="tfb94"><li id="tfb94"></li></pre>

<bdo id="tfb94"><rt id="tfb94"></rt></bdo>
  • <menu id="tfb94"><dl id="tfb94"></dl></menu><i id="tfb94"><acronym id="tfb94"><sub id="tfb94"></sub></acronym></i>

    1. 主站蜘蛛池模板: 长葛市| 横峰县| 康马县| 克什克腾旗| 武平县| 玉山县| 武隆县| 新和县| 杨浦区| 武山县| 秦安县| 寿宁县| 顺义区| 甘孜县| 德化县| 吉林市| 五常市| 乌兰县| 吴江市| 西平县| 宁南县| 石景山区| 繁昌县| 崇仁县| 安福县| 蕉岭县| 班戈县| 恩平市| 武宁县| 宿松县| 阿巴嘎旗| 灌南县| 民县| 原平市| 巴楚县| 浑源县| 安图县| 苏州市| 辉南县| 荃湾区| 金沙县|