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

第三章 驗(yàn)收卷(三) 算法的程序?qū)崿F(xiàn) 浙教版(2019)必修1(課件 練習(xí)三份打包)

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

第三章 驗(yàn)收卷(三) 算法的程序?qū)崿F(xiàn) 浙教版(2019)必修1(課件 練習(xí)三份打包)

資源簡(jiǎn)介

(共36張PPT)
驗(yàn)收卷(三) 算法的程序?qū)崿F(xiàn)
第三章 算法的程序?qū)崿F(xiàn)
(考試時(shí)間40分鐘;滿分50分)
一、選擇題(本大題共12小題,每小題2分,共24分,在每小題給出的四個(gè)選項(xiàng)中,只有一個(gè)符合題目要求,多選、少選、不選均不得分)
1.Python 表達(dá)式 int(19/4)-25%3**2 的值是(  )
A.-3 B.-2 C.2 D.3
A
2.下列 Python 表達(dá)式中,值為 True 的是 (  )
A."ac" in "abcabc"
B.9/3**2!=1
C.abs(-4.3)>9∥2
D."12"=="123456"[1:3]
C
3.下列Python表達(dá)式中,值為True的是 (  )
A.2**3==64**0.5
B.985>211 and not "book"<"pen"
C."Chat" in "chatGPT"
D.len("Python")>6
A
4.下列表達(dá)式的結(jié)果為 True 的是 (  )
A.not "a" in "apple"
B. 2023%1000∥4==23
C. "t" in ["tomato","bear","banana"]
D. "abc"*2>="abca"
D
5.已知字典rec中存儲(chǔ)著某超市部分水果的類別編碼,其值為rec={"01":"蘋果","02":"人參果 ","03":"陽(yáng)光玫瑰葡萄","04":"紅心火龍果","05":"果凍橙"},現(xiàn)要在字典rec中增加一個(gè)鍵為 "06",值為"甜蜜柚"的元素,下列Python語(yǔ)句能實(shí)現(xiàn)的是 (  )
A.rec[06]="甜蜜柚"
B. rec["06"]="甜蜜柚"
C. rec["06"]={"甜蜜柚"}
D. rec["06"]="06":"甜蜜柚"
B
6.普通車輛高速公路超速罰款規(guī)則如下:(1)超過規(guī)定時(shí)速10%(含10%)以內(nèi),暫不處罰;(2)超過規(guī)定時(shí)速10%以上未達(dá)50%(含50%)的,處以200元罰款;(3)超過規(guī)定時(shí)速50%以上的,處以 2000元罰款。若用變量v表示高速公路規(guī)定時(shí)速,變量vt表示車輛行駛時(shí)速,變量k表示車輛的罰款,則下列程序段無(wú)法正常實(shí)現(xiàn)車輛行駛時(shí)速vt和罰款k之間關(guān)系的是 (  )
C
A.if vt<=v*1.1:
   k=0
 elif vt<=v*1.5:
   k=200
 else:
   k=2000
B.if v*1.1   k=200
 else:
   k=0
   if vt>v*1.5:
  k=2000
C.k=0
 if vt>v*1.1:
   k=200
 elif vt>v*1.5:
   k=2000
D.k=2000
 if vt<=v*1.1:
   k=0
 elif vt <=v*1.5:
   k=200
7.根據(jù)國(guó)家標(biāo)準(zhǔn),室內(nèi)空氣質(zhì)量指數(shù)的正常范圍為0.5~2.5,如果空氣質(zhì)量指數(shù)大于2.5,則表明空氣質(zhì)量較差,空氣質(zhì)量指數(shù)小于0.5,表明空氣質(zhì)量較好,下列選項(xiàng)能正確表示這三種情況的是 (  )
D
A.if zs>2.5:
   print("較差")
 elif 0.5   print("正常")
 else:
   print("較好")
B.if 2.5>zs>0.5:
   print("正常")
 elif zs<0.5:
   print("較好")
 else:
   print("較差")
D.if zs<0.5:
   print("較好")
 elif not zs>2.5:
   print("正常")
 elif zs>2.5:
   print("較差")
C.if zs>2.5:
   print("較差")
 elif not zs>0.5:
   print("較好")
 else:
   print("正常")
解析 A選項(xiàng)elif 條件應(yīng)為0.5<=zs<=2.5;B 選項(xiàng)if 條件應(yīng)為2.5>=zs>=0.5;C 選項(xiàng)中,elif 中條件應(yīng)為not zs>=0.5。
8.有如下 Python 程序:
s="abcdefghijk";res=0
for i in range(1,len(s),2):
  res+=ord(s[i])-ord(s[i-1])
print(res)
運(yùn)行該程序,輸出的結(jié)果是( )   
A.5 B.6 C.9 D.10
解析 每2個(gè)字母一組,后一個(gè)與前一個(gè)字母的ASCII碼的差值,共有5組。
A
9.“回文串”是一個(gè)正讀和反讀都一樣的字符串。下列Python段的功能是:輸入一個(gè)字符串,判斷該字符串是否為回文串,若是則輸出“Yes”,否則輸出“No”。
s=input("請(qǐng)輸入字符串:")
i=0
j=len(s)-1
flag=True
while i  if s[i]==s[j]:
    i+=1
    ①   
  else:
    flag=False
if ②    :
  print("Yes")
else:
  print("No")
則程序劃線①②③處應(yīng)填入的語(yǔ)句為(  )
A.①j+=1?、趂lag B.①j+=1  ②not flag
C.①j-=1?、趂lag D.①j-=1  ②not flag
C
解析 本題程序的功能是判斷字符串是否為回文串。本題采用雙指針的方法來判斷頭尾一對(duì)字符,變量 i指向字符串的頭部,j 指向字符串的尾部。因此①處代碼為 j-=1 或 j=j-1,最后根據(jù)邏輯變量 flag 的值來判斷是否為回文串,當(dāng) s[i]!=s[j]時(shí),flag 為 False,因此②處代碼 flag 或 flag==True。
10.有如下Python程序段:
a=[3,5,2,4,1]
sum1=m=a[0]
for i in range(1,len(a)):
  if a[i]     m=a[i]
     sum1+=m
執(zhí)行該程序后,sum1的值為(  )
A.6 B.9 C.11 D.15
C
解析 程序功能是每次將 a[i]與 m 中的較小值累加到變量 sum1 中,因此 sum1=3+3+2+2+1=11。
11.用Python程序處理圖像文件“chenchen.jpg”,該圖像顏色位深度為24bit,圖像如圖所示,程序代碼如下:
    else:
      img[i,j]=0
plt.imshow(img,cmap="gray")
plt.show()
下列說法正確的是(  )
A.待處理圖像的文件名為"chenchen"
B.處理后的圖像像素?cái)?shù)將增加
C.將加框處語(yǔ)句中的“>”改為“<=”,則處理后的圖像中黑白色將互換
D.將加框處語(yǔ)句中 128 改為 188,則處理后圖像中的黑色部分將減少
C
12.某Python程序如下:
s=[3,3,3,6,6,8,11,11,9,4,2,5]
r=[]
for i in range(1,len(s)-1):
  if not(s[i-1]
s[i]>s[i+1]):
    if s[i-1]==s[i]:
      continue
    j=len(r)-1
    while j>=0 and s[i]<=s[r[j]]:
      j-=1
    if j==len(r)-1 or j==-1:
      j+=1
    r=r[:j]+[i]+r[j:]
print(r)
程序運(yùn)行后,輸出的結(jié)果為(  )
A.[3,6,10] B.[6,11,2] C.[6,3,10] D.[10,3,6]
D
二、非選擇題(本大題共4個(gè)小題,共26分)
13.數(shù)據(jù)在網(wǎng)絡(luò)傳輸中,帶寬是寶貴的資源,通過壓縮傳輸?shù)淖址?可以減少數(shù)據(jù)量,從而加快傳輸速度,節(jié)省帶寬資源?,F(xiàn)有一種字符壓縮方法描述如下:對(duì)于連續(xù)的若干個(gè)相同的子串“X”會(huì)壓縮為“[DX]”的形式(D是一個(gè)整數(shù)且1≤D≤99),如字符串“ABABABAB”就壓縮為“[4AB]”或者“[2[2AB]]”,類似于后面這種壓縮之后再壓縮的稱為二重壓縮。如果是“[2[2[2AB]]]”則是三重的。現(xiàn)給出一串壓縮后的結(jié)果,并對(duì)其進(jìn)行解壓縮。
思路:先找出每個(gè)左括號(hào)的位置,然后從后往前枚舉,找出每一個(gè)括號(hào)內(nèi)要解壓的子串以及要解壓的次數(shù),將子串解壓后得到一個(gè)新串,重復(fù)操作,得到最終的解壓縮結(jié)果。
例如:[2[2[2AB]]]→[2[2ABAB]]→[2ABABABAB]→ABABABABABABABAB。
(1)已知采用上述壓縮方法得到的壓縮結(jié)果是“[2Z[2DB]]”,則解壓縮結(jié)果為     。
(2)根據(jù)上述描述,小明利用 Python 設(shè)計(jì)了一個(gè)解壓縮程序,請(qǐng)?jiān)趧澗€處填入合適的代碼。
start = []
s=input("請(qǐng)輸入壓縮結(jié)果:")
for i in range(len(s)):
  if s[i]=="[":
    start.append(i)
for i in range(len(start)-1,-1,-1):
  num=0;temp=" "
 ?、佟   ?
  while j    if "0"<=s[j]<="9":
      num=num*10+int(s[j])
    else:
     ?、凇  ?
    j+=1
  ans=num*temp
  s=s[:start[i]]+③     #重新構(gòu)造字符串
print("解壓結(jié)果為:"+s)
答案 (1)ZDBDBZDBDB (2)①j=start[i]+1?、趖emp+=s[j]?、踑ns +s[j+1:]
14.騰訊通過 QQ 等級(jí)來衡量用戶的活躍情況。QQ 等級(jí)計(jì)算規(guī)則如下:
①用戶當(dāng)天在線兩個(gè)小時(shí),記為活躍 1 天;半小時(shí)及以上、兩小時(shí)以下則記為活躍 0.5 天。
②根據(jù)累計(jì)活躍天數(shù)對(duì)應(yīng)不同 QQ 等級(jí),如表所示,0 級(jí)至 1 級(jí)需活躍 5 天,1 級(jí)至 2 級(jí)需活躍7天,依此類推。
③每升1級(jí),用戶可以獲取1個(gè)△,4 個(gè)△兌換1個(gè)◇,4個(gè)◇兌換1個(gè)○,4 個(gè)○兌換 1個(gè)☆。
級(jí)別 圖標(biāo) 累計(jì)活躍天數(shù)
0級(jí) 0天
1級(jí) △ 5天
2級(jí) △△ 12天
3級(jí) △△△ 21天
4級(jí) ◇ 32天
5級(jí) ◇△ 45天
(1)小張的 QQ 等級(jí)圖標(biāo)為○◇◇◇△△,則小張 QQ 等級(jí)的級(jí)別是    。
(2)“l(fā)og.txt”文件中逐行記錄了某位用戶每天的在線時(shí)長(zhǎng)(以小時(shí)為單位),編程實(shí)現(xiàn)讀取文件內(nèi)容并計(jì)算,按☆○◇△的順序輸出用戶的 QQ 等級(jí)圖標(biāo),請(qǐng)?jiān)趧澗€處填入合適的代碼。
f=open('log.txt')
data=[]
active=0
icon=["☆","○","◇","△"]
#逐行讀取'log.txt'文件中的數(shù)據(jù),依次添加到 data 列表中,如data=[1.9,
2.3,11.5,3.1,2.8,5.2……]代碼略
#計(jì)算用戶的活躍天數(shù)
for i in range(len(data)):
  if data[i] >= 2:
    active+=1
  elif data[i]>=0.5:
    ①   
#計(jì)算用戶等級(jí)
base=5
level=0
while active >=base:
  level+=1
 ?、凇   ?
  base = base + 2
#將等級(jí)換算為圖標(biāo)
s = " "
while level !=0:
  r = level % 4
  s = str(r) + s
 ?、邸  ?
n=len(s)
ans=" " 
start=4-n
for i in range(n):
  ans +=④   
print(ans)
答案 (1)30 (2) ①active+=0.5 ②active=active-base?、踠evel=level∥4
④icon[start+i]*int(s[i])
15.每個(gè)人進(jìn)、出館的時(shí)間用一個(gè)長(zhǎng)度為11的字符串表示,例如“08:05-08:45”表示進(jìn)館時(shí)間為8點(diǎn)05分,出館時(shí)間為8點(diǎn)45分?,F(xiàn)要求統(tǒng)計(jì)當(dāng)天館內(nèi)人數(shù)超過指定人數(shù)的總時(shí)長(zhǎng),當(dāng)天在館人數(shù)最多時(shí)刻及在館人數(shù)。
(1)8點(diǎn)01分到8點(diǎn)08分的進(jìn)出館人數(shù)如下表所示:
分鐘 01 02 03 04 05 06 07 08
進(jìn)館人數(shù) 5 0 4 2 1 3 1 2
出館人數(shù) 0 1 1 1 6 3 2 2
在館人數(shù)最多時(shí)刻為    。
(2)每個(gè)參觀者進(jìn)入場(chǎng)館和出館時(shí)間保存在“參觀記錄.txt”文件中,編寫Python程序,請(qǐng)將程序補(bǔ)充完整。
rs=[0]*540 #存儲(chǔ)早上8點(diǎn)至下午5點(diǎn)每分鐘的在館人數(shù)
f=open("參觀記錄.txt",encoding="utf-8")
n=0
for sj in f :
  m1=int(sj[:2])*60+int(sj[3:5])-480
#將入館時(shí)間轉(zhuǎn)換為上午8點(diǎn)以后的分鐘數(shù)
  m2=int(sj[6:8])*60+int(sj[9:11])-480
  rs[m1]+=1
 ?、佟  ?
sp =int(input("請(qǐng)輸入指定人數(shù):"))
totrs=imax=sumrs=0
itime=""
for i in range(540):
  ②   
  if totrs>sp:
   ?、邸  ?
  if totrs>imax:
    imax=totrs
    itime=str(i∥60+8)+":"+str(④   )
print("超過指定人數(shù)的總時(shí)長(zhǎng):" + str(sumrs) + "分鐘")
print("在館人數(shù)最多時(shí)刻為:" + itime + ",共" + str(imax) + "人")
答案 (1)8 (2)①rs[m2]-=1
②totrs+= rs[i]?、踫umrs+=1 ④i%60
16.挖金礦游戲。在一個(gè)8行8列的矩陣中,礦工位于第1行第1列的格子,n個(gè)金礦隨機(jī)分布在第1行下面的各個(gè)格子中,每個(gè)金礦的橫坐標(biāo)依次保存在x數(shù)組,縱坐標(biāo)保存在y數(shù)組。礦工收集金礦方法:先確定每行最左邊和最右邊金礦的坐標(biāo),對(duì)于同一行的金礦,礦工先移動(dòng)到最左邊金礦正上方,再執(zhí)行向下x步的指令進(jìn)行挖礦,接著從該行左邊第2個(gè)金礦開始一直挖到最右邊。該行完成后,再依次挖下方各行的金礦。
下圖a所示的金礦(圖中黑色方塊)分布圖,按右側(cè)所示的指令,可以收集全部金礦。
(1)現(xiàn)有4*4的金礦分布圖如圖b所示,礦工在左上角位置,寫出礦工按規(guī)則獲得所有金礦的指令(指令之間用逗號(hào)或空格隔開)        。
(2)編寫程序,按順序輸出指令,使礦工按照規(guī)則得到所有金礦,將空白處填寫完整。
x=[2,2,5,5,5,8] #各金礦行號(hào),從小到大升序排列
y=[1,2,4,5,8,6] #各金礦列號(hào),同一行金礦,列號(hào)從小到大升序排列
n=len(x) #金礦數(shù)量
px=py=1 #礦工初始位置行號(hào)和列號(hào)
i=0
while i  beg=i   
  while i    i+=1
  if y[beg]    print("左"+str(py-y[beg]))
  elif y[beg]>py:
    print("右"+str(①    ))
  print("下"+str(x[beg]-px))
  print("挖礦")
  for k in range(②    ):
    print("右"+str(y[k]-y[k-1]))
    print("挖礦")
  px=x[beg]
 ?、邸   ?
  i+=1
答案 (1)下1 挖礦 下2 挖礦 右3 挖礦 或下1,挖礦,下2,挖礦,右3,挖礦
(2)①y[beg]-py?、赽eg+1,i+1 ③py=y[i]驗(yàn)收卷(三) 算法的程序?qū)崿F(xiàn)
(考試時(shí)間40分鐘;滿分50分)
一、選擇題(本大題共12小題,每小題2分,共24分,在每小題給出的四個(gè)選項(xiàng)中,只有一個(gè)符合題目要求,多選、少選、不選均不得分)
1.Python 表達(dá)式 int(19/4)-25%3**2 的值是 (  )
A.-3 B.-2 C.2 D.3
答案 A
2.下列 Python 表達(dá)式中,值為 True 的是 (  )
A."ac" in "abcabc"
B.9/3**2!=1
C.abs(-4.3)>9∥2
D."12"=="123456"[1:3]
答案 C
3.下列Python表達(dá)式中,值為True的是 (  )
A.2**3==64**0.5
B.985>211 and not "book"<"pen"
C."Chat" in "chatGPT"
D.len("Python")>6
答案 A
4.下列表達(dá)式的結(jié)果為 True 的是 (  )
A.not "a" in "apple"
B. 2023%1000∥4==23
C. "t" in ["tomato","bear","banana"]
D. "abc"*2>="abca"
答案 D
5.已知字典rec中存儲(chǔ)著某超市部分水果的類別編碼,其值為rec={"01":"蘋果","02":"人參果 ","03":"陽(yáng)光玫瑰葡萄","04":"紅心火龍果","05":"果凍橙"},現(xiàn)要在字典rec中增加一個(gè)鍵為 "06",值為"甜蜜柚"的元素,下列Python語(yǔ)句能實(shí)現(xiàn)的是 (  )
A.rec[06]="甜蜜柚"
B. rec["06"]="甜蜜柚"
C. rec["06"]={"甜蜜柚"}
D. rec["06"]="06":"甜蜜柚"
答案 B
6.普通車輛高速公路超速罰款規(guī)則如下:(1)超過規(guī)定時(shí)速10%(含10%)以內(nèi),暫不處罰;(2)超過規(guī)定時(shí)速10%以上未達(dá)50%(含50%)的,處以200元罰款;(3)超過規(guī)定時(shí)速50%以上的,處以 2000元罰款。若用變量v表示高速公路規(guī)定時(shí)速,變量vt表示車輛行駛時(shí)速,變量k表示車輛的罰款,則下列程序段無(wú)法正常實(shí)現(xiàn)車輛行駛時(shí)速vt和罰款k之間關(guān)系的是 (  )
A.if vt<=v*1.1:
   k=0
 elif vt<=v*1.5:
   k=200
 else:
   k=2000
B.if v*1.1   k=200
 else:
   k=0
   if vt>v*1.5:
  k=2000
C.k=0
 if vt>v*1.1:
   k=200
 elif vt>v*1.5:
   k=2000
D.k=2000
 if vt<=v*1.1:
   k=0
 elif vt <=v*1.5:
   k=200
答案 C
7.根據(jù)國(guó)家標(biāo)準(zhǔn),室內(nèi)空氣質(zhì)量指數(shù)的正常范圍為0.5~2.5,如果空氣質(zhì)量指數(shù)大于2.5,則表明空氣質(zhì)量較差,空氣質(zhì)量指數(shù)小于0.5,表明空氣質(zhì)量較好,下列選項(xiàng)能正確表示這三種情況的是 (  )
A.if zs>2.5:
   print("較差")
 elif 0.5   print("正常")
 else:
   print("較好")
B.if 2.5>zs>0.5:
   print("正常")
 elif zs<0.5:
   print("較好")
 else:
   print("較差")
C.if zs>2.5:
   print("較差")
 elif not zs>0.5:
   print("較好")
 else:
   print("正常")
D.if zs<0.5:
   print("較好")
 elif not zs>2.5:
   print("正常")
 elif zs>2.5:
   print("較差")
答案 D
解析 A選項(xiàng)elif 條件應(yīng)為0.5<=zs<=2.5;B 選項(xiàng)if 條件應(yīng)為2.5>=zs>=0.5;C 選項(xiàng)中,elif 中條件應(yīng)為not zs>=0.5。
8.有如下 Python 程序:
s="abcdefghijk";res=0
for i in range(1,len(s),2):
  res+=ord(s[i])-ord(s[i-1])
print(res)
A.5 B.6 C.9 D.10
答案 A
解析 每2個(gè)字母一組,后一個(gè)與前一個(gè)字母的ASCII碼的差值,共有5組。
9.“回文串”是一個(gè)正讀和反讀都一樣的字符串。下列Python段的功能是:輸入一個(gè)字符串,判斷該字符串是否為回文串,若是則輸出“Yes”,否則輸出“No”。
s=input("請(qǐng)輸入字符串:")
i=0
j=len(s)-1
flag=True
while i  if s[i]==s[j]:
    i+=1
   ?、佟  ?
  else:
    flag=False
if ②    :
  print("Yes")
else:
  print("No")
則程序劃線①②③處應(yīng)填入的語(yǔ)句為 (  )
A.①j+=1 ②flag B.①j+=1  ②not flag
C.①j-=1 ②flag D.①j-=1  ②not flag
答案 C
解析 本題程序的功能是判斷字符串是否為回文串。本題采用雙指針的方法來判斷頭尾一對(duì)字符,變量 i指向字符串的頭部,j 指向字符串的尾部。因此①處代碼為 j-=1 或 j=j-1,最后根據(jù)邏輯變量 flag 的值來判斷是否為回文串,當(dāng) s[i]!=s[j]時(shí),flag 為 False,因此②處代碼 flag 或 flag==True。
10.有如下Python程序段:
a=[3,5,2,4,1]
sum1=m=a[0]
for i in range(1,len(a)):
  if a[i]     m=a[i]
     sum1+=m
執(zhí)行該程序后,sum1的值為 (  )
A.6 B.9 C.11 D.15
答案 C
解析 程序功能是每次將 a[i]與 m 中的較小值累加到變量 sum1 中,因此 sum1=3+3+2+2+1=11。
11.用Python程序處理圖像文件“chenchen.jpg”,該圖像顏色位深度為24bit,圖像如圖所示,程序代碼如下:
#導(dǎo)入PIL、np和matplotlib.pyplot庫(kù),代碼略
img=np.array(Image.open("chenchen.jpg").convert("L"))
rows,cols=img.shape
for i in range(rows):
  for j in range(cols):
    if (img[i,j]>128):
      img[i,j]=1
    else:
      img[i,j]=0
plt.imshow(img,cmap="gray")
plt.show()
下列說法正確的是 (  )
A.待處理圖像的文件名為"chenchen"
B.處理后的圖像像素?cái)?shù)將增加
C.將加框處語(yǔ)句中的“>”改為“<=”,則處理后的圖像中黑白色將互換
D.將加框處語(yǔ)句中 128 改為 188,則處理后圖像中的黑色部分將減少
答案 C
12.某Python程序如下:
s=[3,3,3,6,6,8,11,11,9,4,2,5]
r=[]
for i in range(1,len(s)-1):
  if not(s[i-1]
s[i]>s[i+1]):
    if s[i-1]==s[i]:
      continue
    j=len(r)-1
    while j>=0 and s[i]<=s[r[j]]:
      j-=1
    if j==len(r)-1 or j==-1:
      j+=1
    r=r[:j]+[i]+r[j:]
print(r)
程序運(yùn)行后,輸出的結(jié)果為 (  )
A.[3,6,10] B.[6,11,2] C.[6,3,10] D.[10,3,6]
答案 D
二、非選擇題(本大題共4個(gè)小題,共26分)
13.數(shù)據(jù)在網(wǎng)絡(luò)傳輸中,帶寬是寶貴的資源,通過壓縮傳輸?shù)淖址?可以減少數(shù)據(jù)量,從而加快傳輸速度,節(jié)省帶寬資源。現(xiàn)有一種字符壓縮方法描述如下:對(duì)于連續(xù)的若干個(gè)相同的子串“X”會(huì)壓縮為“[DX]”的形式(D是一個(gè)整數(shù)且1≤D≤99),如字符串“ABABABAB”就壓縮為“[4AB]”或者“[2[2AB]]”,類似于后面這種壓縮之后再壓縮的稱為二重壓縮。如果是“[2[2[2AB]]]”則是三重的?,F(xiàn)給出一串壓縮后的結(jié)果,并對(duì)其進(jìn)行解壓縮。
思路:先找出每個(gè)左括號(hào)的位置,然后從后往前枚舉,找出每一個(gè)括號(hào)內(nèi)要解壓的子串以及要解壓的次數(shù),將子串解壓后得到一個(gè)新串,重復(fù)操作,得到最終的解壓縮結(jié)果。
例如:[2[2[2AB]]]→[2[2ABAB]]→[2ABABABAB]→ABABABABABABABAB。
(1)已知采用上述壓縮方法得到的壓縮結(jié)果是“[2Z[2DB]]”,則解壓縮結(jié)果為     。
(2)根據(jù)上述描述,小明利用 Python 設(shè)計(jì)了一個(gè)解壓縮程序,請(qǐng)?jiān)趧澗€處填入合適的代碼。
start = []
s=input("請(qǐng)輸入壓縮結(jié)果:")
for i in range(len(s)):
  if s[i]=="[":
    start.append(i)
for i in range(len(start)-1,-1,-1):
  num=0;temp=" "
 ?、佟   ?
  while j    if "0"<=s[j]<="9":
      num=num*10+int(s[j])
    else:
      ②   
    j+=1
  ans=num*temp
  s=s[:start[i]]+③     #重新構(gòu)造字符串
print("解壓結(jié)果為:"+s)
答案 (1)ZDBDBZDBDB (2)①j=start[i]+1?、趖emp+=s[j]?、踑ns +s[j+1:]
14.騰訊通過 QQ 等級(jí)來衡量用戶的活躍情況。QQ 等級(jí)計(jì)算規(guī)則如下:
①用戶當(dāng)天在線兩個(gè)小時(shí),記為活躍 1 天;半小時(shí)及以上、兩小時(shí)以下則記為活躍 0.5 天。
②根據(jù)累計(jì)活躍天數(shù)對(duì)應(yīng)不同 QQ 等級(jí),如表所示,0 級(jí)至 1 級(jí)需活躍 5 天,1 級(jí)至 2 級(jí)需活躍7天,依此類推。
③每升1級(jí),用戶可以獲取1個(gè)△,4 個(gè)△兌換1個(gè)◇,4個(gè)◇兌換1個(gè)○,4 個(gè)○兌換 1個(gè)☆。
級(jí)別 圖標(biāo) 累計(jì)活躍天數(shù)
0級(jí) 0天
1級(jí) △ 5天
2級(jí) △△ 12天
3級(jí) △△△ 21天
4級(jí) ◇ 32天
5級(jí) ◇△ 45天
(1)小張的 QQ 等級(jí)圖標(biāo)為○◇◇◇△△,則小張 QQ 等級(jí)的級(jí)別是    。
(2)“l(fā)og.txt”文件中逐行記錄了某位用戶每天的在線時(shí)長(zhǎng)(以小時(shí)為單位),編程實(shí)現(xiàn)讀取文件內(nèi)容并計(jì)算,按☆○◇△的順序輸出用戶的 QQ 等級(jí)圖標(biāo),請(qǐng)?jiān)趧澗€處填入合適的代碼。
f=open('log.txt')
data=[]
active=0
icon=["☆","○","◇","△"]
#逐行讀取'log.txt'文件中的數(shù)據(jù),依次添加到 data 列表中,如data=[1.9, 2.3,11.5,3.1,2.8,5.2……]代碼略
#計(jì)算用戶的活躍天數(shù)
for i in range(len(data)):
  if data[i] >= 2:
    active+=1
  elif data[i]>=0.5:
   ?、佟  ?
#計(jì)算用戶等級(jí)
base=5
level=0
while active >=base:
  level+=1
 ?、凇   ?
  base = base + 2
#將等級(jí)換算為圖標(biāo)
s = " "
while level !=0:
  r = level % 4
  s = str(r) + s
 ?、邸  ?
n=len(s)
ans=" " 
start=4-n
for i in range(n):
  ans +=④   
print(ans)
答案 (1)30 (2) ①active+=0.5
②active=active-base?、踠evel=level∥4
④icon[start+i]*int(s[i])
15.每個(gè)人進(jìn)、出館的時(shí)間用一個(gè)長(zhǎng)度為11的字符串表示,例如“08:05-08:45”表示進(jìn)館時(shí)間為8點(diǎn)05分,出館時(shí)間為8點(diǎn)45分。現(xiàn)要求統(tǒng)計(jì)當(dāng)天館內(nèi)人數(shù)超過指定人數(shù)的總時(shí)長(zhǎng),當(dāng)天在館人數(shù)最多時(shí)刻及在館人數(shù)。
(1)8點(diǎn)01分到8點(diǎn)08分的進(jìn)出館人數(shù)如下表所示:
分鐘 01 02 03 04 05 06 07 08
進(jìn)館人數(shù) 5 0 4 2 1 3 1 2
出館人數(shù) 0 1 1 1 6 3 2 2
在館人數(shù)最多時(shí)刻為    。
(2)每個(gè)參觀者進(jìn)入場(chǎng)館和出館時(shí)間保存在“參觀記錄.txt”文件中,編寫Python程序,請(qǐng)將程序補(bǔ)充完整。
rs=[0]*540 #存儲(chǔ)早上8點(diǎn)至下午5點(diǎn)每分鐘的在館人數(shù)
f=open("參觀記錄.txt",encoding="utf-8")
n=0
for sj in f :
  m1=int(sj[:2])*60+int(sj[3:5])-480
#將入館時(shí)間轉(zhuǎn)換為上午8點(diǎn)以后的分鐘數(shù)
  m2=int(sj[6:8])*60+int(sj[9:11])-480
  rs[m1]+=1
  ①   
sp =int(input("請(qǐng)輸入指定人數(shù):"))
totrs=imax=sumrs=0
itime=""
for i in range(540):
  ②   
  if totrs>sp:
    ③   
  if totrs>imax:
    imax=totrs
    itime=str(i∥60+8)+":"+str(④   )
print("超過指定人數(shù)的總時(shí)長(zhǎng):" + str(sumrs) + "分鐘")
print("在館人數(shù)最多時(shí)刻為:" + itime + ",共" + str(imax) + "人")
答案 (1)8 (2)①rs[m2]-=1
②totrs+= rs[i] ③sumrs+=1?、躨%60
16.挖金礦游戲。在一個(gè)8行8列的矩陣中,礦工位于第1行第1列的格子,n個(gè)金礦隨機(jī)分布在第1行下面的各個(gè)格子中,每個(gè)金礦的橫坐標(biāo)依次保存在x數(shù)組,縱坐標(biāo)保存在y數(shù)組。礦工收集金礦方法:先確定每行最左邊和最右邊金礦的坐標(biāo),對(duì)于同一行的金礦,礦工先移動(dòng)到最左邊金礦正上方,再執(zhí)行向下x步的指令進(jìn)行挖礦,接著從該行左邊第2個(gè)金礦開始一直挖到最右邊。該行完成后,再依次挖下方各行的金礦。
下圖a所示的金礦(圖中黑色方塊)分布圖,按右側(cè)所示的指令,可以收集全部金礦。
(1)現(xiàn)有4*4的金礦分布圖如圖b所示,礦工在左上角位置,寫出礦工按規(guī)則獲得所有金礦的指令(指令之間用逗號(hào)或空格隔開)        。
(2)編寫程序,按順序輸出指令,使礦工按照規(guī)則得到所有金礦,將空白處填寫完整。
x=[2,2,5,5,5,8] #各金礦行號(hào),從小到大升序排列
y=[1,2,4,5,8,6] #各金礦列號(hào),同一行金礦,列號(hào)從小到大升序排列
n=len(x) #金礦數(shù)量
px=py=1 #礦工初始位置行號(hào)和列號(hào)
i=0
while i  beg=i   
  while i    i+=1
  if y[beg]    print("左"+str(py-y[beg]))
  elif y[beg]>py:
    print("右"+str(①    ))
  print("下"+str(x[beg]-px))
  print("挖礦")
  for k in range(②    ):
    print("右"+str(y[k]-y[k-1]))
    print("挖礦")
  px=x[beg]
  ③    
  i+=1
答案 (1)下1 挖礦 下2 挖礦 右3 挖礦 或下1,挖礦,下2,挖礦,右3,挖礦
(2)①y[beg]-py?、赽eg+1,i+1?、踦y=y[i]驗(yàn)收卷(三) 算法的程序?qū)崿F(xiàn)
(考試時(shí)間40分鐘;滿分50分)
一、選擇題(本大題共12小題,每小題2分,共24分,在每小題給出的四個(gè)選項(xiàng)中,只有一個(gè)符合題目要求,多選、少選、不選均不得分)
1.Python 表達(dá)式 int(19/4)-25%3**2 的值是(  )
A.-3 B.-2
C.2 D.3
2.下列 Python 表達(dá)式中,值為 True 的是 (  )
A."ac" in "abcabc" B.9/3**2!=1
C.abs(-4.3)>9∥2 D."12"=="123456"[1:3]
3.下列Python表達(dá)式中,值為True的是 (  )
A.2**3==64**0.5
B.985>211 and not "book"<"pen"
C."Chat" in "chatGPT"
D.len("Python")>6
4.下列表達(dá)式的結(jié)果為 True 的是 (  )
A.not "a" in "apple"
B. 2023%1000∥4==23
C. "t" in ["tomato","bear","banana"]
D. "abc"*2>="abca"
5.已知字典rec中存儲(chǔ)著某超市部分水果的類別編碼,其值為rec={"01":"蘋果","02":"人參果 ","03":"陽(yáng)光玫瑰葡萄","04":"紅心火龍果","05":"果凍橙"},現(xiàn)要在字典rec中增加一個(gè)鍵為 "06",值為"甜蜜柚"的元素,下列Python語(yǔ)句能實(shí)現(xiàn)的是 (  )
A.rec[06]="甜蜜柚"
B. rec["06"]="甜蜜柚"
C. rec["06"]={"甜蜜柚"}
D. rec["06"]="06":"甜蜜柚"
6.普通車輛高速公路超速罰款規(guī)則如下:(1)超過規(guī)定時(shí)速10%(含10%)以內(nèi),暫不處罰;(2)超過規(guī)定時(shí)速10%以上未達(dá)50%(含50%)的,處以200元罰款;(3)超過規(guī)定時(shí)速50%以上的,處以 2000元罰款。若用變量v表示高速公路規(guī)定時(shí)速,變量vt表示車輛行駛時(shí)速,變量k表示車輛的罰款,則下列程序段無(wú)法正常實(shí)現(xiàn)車輛行駛時(shí)速vt和罰款k之間關(guān)系的是 (  )
A.if vt<=v*1.1:
   k=0
 elif vt<=v*1.5:
   k=200
 else:
   k=2000
B.if v*1.1   k=200
 else:
   k=0
   if vt>v*1.5:
  k=2000
C.k=0
 if vt>v*1.1:
   k=200
 elif vt>v*1.5:
   k=2000
D.k=2000
 if vt<=v*1.1:
   k=0
 elif vt <=v*1.5:
   k=200
7.根據(jù)國(guó)家標(biāo)準(zhǔn),室內(nèi)空氣質(zhì)量指數(shù)的正常范圍為0.5~2.5,如果空氣質(zhì)量指數(shù)大于2.5,則表明空氣質(zhì)量較差,空氣質(zhì)量指數(shù)小于0.5,表明空氣質(zhì)量較好,下列選項(xiàng)能正確表示這三種情況的是(  )
A.if zs>2.5:
   print("較差")
 elif 0.5   print("正常")
 else:
   print("較好")
B.if 2.5>zs>0.5:
   print("正常")
 elif zs<0.5:
   print("較好")
 else:
   print("較差")
C.if zs>2.5:
   print("較差")
 elif not zs>0.5:
   print("較好")
 else:
   print("正常")
D.if zs<0.5:
   print("較好")
 elif not zs>2.5:
   print("正常")
 elif zs>2.5:
   print("較差")
8.有如下 Python 程序:
s="abcdefghijk";res=0
for i in range(1,len(s),2):
  res+=ord(s[i])-ord(s[i-1])
print(res)
運(yùn)行該程序,輸出的結(jié)果是(  )
A.5 B.6 C.9 D.10
9.“回文串”是一個(gè)正讀和反讀都一樣的字符串。下列Python段的功能是:輸入一個(gè)字符串,判斷該字符串是否為回文串,若是則輸出“Yes”,否則輸出“No”。
s=input("請(qǐng)輸入字符串:")
i=0
j=len(s)-1
flag=True
while i  if s[i]==s[j]:
    i+=1
   ?、佟  ?
  else:
    flag=False
if ②    :
  print("Yes")
else:
  print("No")
則程序劃線①②③處應(yīng)填入的語(yǔ)句為(  )
A.①j+=1 ②flag B.①j+=1  ②not flag
C.①j-=1?、趂lag D.①j-=1  ②not flag
10.有如下Python程序段:
a=[3,5,2,4,1]
sum1=m=a[0]
for i in range(1,len(a)):
  if a[i]     m=a[i]
     sum1+=m
執(zhí)行該程序后,sum1的值為(  )
A.6 B.9 C.11 D.15
11.用Python程序處理圖像文件“chenchen.jpg”,該圖像顏色位深度為24bit,圖像如圖所示,程序代碼如下:
#導(dǎo)入PIL、np和matplotlib.pyplot庫(kù),代碼略
img=np.array(Image.open("chenchen.jpg").convert("L"))
rows,cols=img.shape
for i in range(rows):
  for j in range(cols):
    if (img[i,j]>128):
      img[i,j]=1
    else:
      img[i,j]=0
plt.imshow(img,cmap="gray")
plt.show()
下列說法正確的是(  )
A.待處理圖像的文件名為"chenchen"
B.處理后的圖像像素?cái)?shù)將增加
C.將加框處語(yǔ)句中的“>”改為“<=”,則處理后的圖像中黑白色將互換
D.將加框處語(yǔ)句中 128 改為 188,則處理后圖像中的黑色部分將減少
12.某Python程序如下:
s=[3,3,3,6,6,8,11,11,9,4,2,5]
r=[]
for i in range(1,len(s)-1):
  if not(s[i-1]
s[i]>s[i+1]):
    if s[i-1]==s[i]:
      continue
    j=len(r)-1
    while j>=0 and s[i]<=s[r[j]]:
      j-=1
    if j==len(r)-1 or j==-1:
      j+=1
    r=r[:j]+[i]+r[j:]
print(r)
程序運(yùn)行后,輸出的結(jié)果為(  )
A.[3,6,10] B.[6,11,2] C.[6,3,10] D.[10,3,6]
二、非選擇題(本大題共4個(gè)小題,共26分)
13.數(shù)據(jù)在網(wǎng)絡(luò)傳輸中,帶寬是寶貴的資源,通過壓縮傳輸?shù)淖址?可以減少數(shù)據(jù)量,從而加快傳輸速度,節(jié)省帶寬資源?,F(xiàn)有一種字符壓縮方法描述如下:對(duì)于連續(xù)的若干個(gè)相同的子串“X”會(huì)壓縮為“[DX]”的形式(D是一個(gè)整數(shù)且1≤D≤99),如字符串“ABABABAB”就壓縮為“[4AB]”或者“[2[2AB]]”,類似于后面這種壓縮之后再壓縮的稱為二重壓縮。如果是“[2[2[2AB]]]”則是三重的?,F(xiàn)給出一串壓縮后的結(jié)果,并對(duì)其進(jìn)行解壓縮。
思路:先找出每個(gè)左括號(hào)的位置,然后從后往前枚舉,找出每一個(gè)括號(hào)內(nèi)要解壓的子串以及要解壓的次數(shù),將子串解壓后得到一個(gè)新串,重復(fù)操作,得到最終的解壓縮結(jié)果。
例如:[2[2[2AB]]]→[2[2ABAB]]→[2ABABABAB]→ABABABABABABABAB。
(1)已知采用上述壓縮方法得到的壓縮結(jié)果是“[2Z[2DB]]”,則解壓縮結(jié)果為     。
(2)根據(jù)上述描述,小明利用 Python 設(shè)計(jì)了一個(gè)解壓縮程序,請(qǐng)?jiān)趧澗€處填入合適的代碼。
start = []
s=input("請(qǐng)輸入壓縮結(jié)果:")
for i in range(len(s)):
  if s[i]=="[":
    start.append(i)
for i in range(len(start)-1,-1,-1):
  num=0;temp=" "
  ①    
  while j    if "0"<=s[j]<="9":
      num=num*10+int(s[j])
    else:
     ?、凇  ?
    j+=1
  ans=num*temp
  s=s[:start[i]]+③     #重新構(gòu)造字符串
print("解壓結(jié)果為:"+s)
14.騰訊通過 QQ 等級(jí)來衡量用戶的活躍情況。QQ 等級(jí)計(jì)算規(guī)則如下:
①用戶當(dāng)天在線兩個(gè)小時(shí),記為活躍 1 天;半小時(shí)及以上、兩小時(shí)以下則記為活躍 0.5 天。
②根據(jù)累計(jì)活躍天數(shù)對(duì)應(yīng)不同 QQ 等級(jí),如表所示,0 級(jí)至 1 級(jí)需活躍 5 天,1 級(jí)至 2 級(jí)需活躍7天,依此類推。
③每升1級(jí),用戶可以獲取1個(gè)△,4 個(gè)△兌換1個(gè)◇,4個(gè)◇兌換1個(gè)○,4 個(gè)○兌換 1個(gè)☆。
級(jí)別 圖標(biāo) 累計(jì)活躍天數(shù)
0級(jí) 0天
1級(jí) △ 5天
2級(jí) △△ 12天
3級(jí) △△△ 21天
4級(jí) ◇ 32天
5級(jí) ◇△ 45天
(1)小張的 QQ 等級(jí)圖標(biāo)為○◇◇◇△△,則小張 QQ 等級(jí)的級(jí)別是    。
(2)“l(fā)og.txt”文件中逐行記錄了某位用戶每天的在線時(shí)長(zhǎng)(以小時(shí)為單位),編程實(shí)現(xiàn)讀取文件內(nèi)容并計(jì)算,按☆○◇△的順序輸出用戶的 QQ 等級(jí)圖標(biāo),請(qǐng)?jiān)趧澗€處填入合適的代碼。
f=open('log.txt')
data=[]
active=0
icon=["☆","○","◇","△"]
#逐行讀取'log.txt'文件中的數(shù)據(jù),依次添加到 data 列表中,如data=[1.9, 2.3,11.5,3.1,2.8,5.2……]代碼略
#計(jì)算用戶的活躍天數(shù)
for i in range(len(data)):
  if data[i] >= 2:
    active+=1
  elif data[i]>=0.5:
    ①   
#計(jì)算用戶等級(jí)
base=5
level=0
while active >=base:
  level+=1
  ②    
  base = base + 2
#將等級(jí)換算為圖標(biāo)
s = " "
while level !=0:
  r = level % 4
  s = str(r) + s
  ③   
n=len(s)
ans=" " 
start=4-n
for i in range(n):
  ans +=④   
print(ans)
15.每個(gè)人進(jìn)、出館的時(shí)間用一個(gè)長(zhǎng)度為11的字符串表示,例如“08:05-08:45”表示進(jìn)館時(shí)間為8點(diǎn)05分,出館時(shí)間為8點(diǎn)45分?,F(xiàn)要求統(tǒng)計(jì)當(dāng)天館內(nèi)人數(shù)超過指定人數(shù)的總時(shí)長(zhǎng),當(dāng)天在館人數(shù)最多時(shí)刻及在館人數(shù)。
(1)8點(diǎn)01分到8點(diǎn)08分的進(jìn)出館人數(shù)如下表所示:
分鐘 01 02 03 04 05 06 07 08
進(jìn)館人數(shù) 5 0 4 2 1 3 1 2
出館人數(shù) 0 1 1 1 6 3 2 2
在館人數(shù)最多時(shí)刻為    。
(2)每個(gè)參觀者進(jìn)入場(chǎng)館和出館時(shí)間保存在“參觀記錄.txt”文件中,編寫Python程序,請(qǐng)將程序補(bǔ)充完整。
rs=[0]*540 #存儲(chǔ)早上8點(diǎn)至下午5點(diǎn)每分鐘的在館人數(shù)
f=open("參觀記錄.txt",encoding="utf-8")
n=0
for sj in f :
  m1=int(sj[:2])*60+int(sj[3:5])-480
#將入館時(shí)間轉(zhuǎn)換為上午8點(diǎn)以后的分鐘數(shù)
  m2=int(sj[6:8])*60+int(sj[9:11])-480
  rs[m1]+=1
 ?、佟  ?
sp =int(input("請(qǐng)輸入指定人數(shù):"))
totrs=imax=sumrs=0
itime=""
for i in range(540):
  ②   
  if totrs>sp:
   ?、邸  ?
  if totrs>imax:
    imax=totrs
    itime=str(i∥60+8)+":"+str(④   )
print("超過指定人數(shù)的總時(shí)長(zhǎng):" + str(sumrs) + "分鐘")
print("在館人數(shù)最多時(shí)刻為:" + itime + ",共" + str(imax) + "人")
16.挖金礦游戲。在一個(gè)8行8列的矩陣中,礦工位于第1行第1列的格子,n個(gè)金礦隨機(jī)分布在第1行下面的各個(gè)格子中,每個(gè)金礦的橫坐標(biāo)依次保存在x數(shù)組,縱坐標(biāo)保存在y數(shù)組。礦工收集金礦方法:先確定每行最左邊和最右邊金礦的坐標(biāo),對(duì)于同一行的金礦,礦工先移動(dòng)到最左邊金礦正上方,再執(zhí)行向下x步的指令進(jìn)行挖礦,接著從該行左邊第2個(gè)金礦開始一直挖到最右邊。該行完成后,再依次挖下方各行的金礦。
下圖a所示的金礦(圖中黑色方塊)分布圖,按右側(cè)所示的指令,可以收集全部金礦。
(1)現(xiàn)有4*4的金礦分布圖如圖b所示,礦工在左上角位置,寫出礦工按規(guī)則獲得所有金礦的指令(指令之間用逗號(hào)或空格隔開)        。
(2)編寫程序,按順序輸出指令,使礦工按照規(guī)則得到所有金礦,將空白處填寫完整。
x=[2,2,5,5,5,8] #各金礦行號(hào),從小到大升序排列
y=[1,2,4,5,8,6] #各金礦列號(hào),同一行金礦,列號(hào)從小到大升序排列
n=len(x) #金礦數(shù)量
px=py=1 #礦工初始位置行號(hào)和列號(hào)
i=0
while i  beg=i   
  while i    i+=1
  if y[beg]    print("左"+str(py-y[beg]))
  elif y[beg]>py:
    print("右"+str(①    ))
  print("下"+str(x[beg]-px))
  print("挖礦")
  for k in range(②    ):
    print("右"+str(y[k]-y[k-1]))
    print("挖礦")
  px=x[beg]
  ③    
  i+=1

展開更多......

收起↑

資源列表

<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. 主站蜘蛛池模板: 睢宁县| 东源县| 汝南县| 明光市| 宁晋县| 内江市| 瓦房店市| 北流市| 锦屏县| 武安市| 延长县| 昆明市| 德庆县| 洪湖市| 姜堰市| 杂多县| 彭阳县| 吉安市| 斗六市| 芦溪县| 台州市| 三亚市| 体育| 福安市| 台北县| 长泰县| 醴陵市| 红原县| 贺州市| 临高县| 宜阳县| 浮梁县| 白城市| 台北市| 松江区| 边坝县| 海安县| 上思县| 克拉玛依市| 洮南市| 淮阳县|