資源預(yù)覽





s1='' ; s2=''; i = 0
while i < len(s):
if '0'<=s[i]<='9':
s1 = s1 + s[i]
elif 'a'<=s[i]<='z':
s2 = s[i] + s2
i = i + 1
ans = s2 + s1
print(ans)
程序執(zhí)行后,輸出的結(jié)果是( )
A.12art3 B.a(chǎn)rt123 C.rta123 D.a(chǎn)rt321
2.如下Python程序段
x = 0
while x < 50:
x = (x + 2) * (x + 3)
運(yùn)行后,x的值為( )
A.0 B.72 C.50 D.168
3.在一次比賽中,需要隨機(jī)給10名選手各編一個(gè)0~9范圍內(nèi)的唯一序號,對應(yīng)的Python程序段如下:
_________________
a,b=[0]*10,[False]*10
i=0
while i<=9:
_________________
if not b[r]:
a[i]=r
___________
i=i+1
print(a)
則劃線處的代碼依次是( )
① r=random.randint(0,10) ② b[r]=True ③import random
④ b[i]=True ⑤from random import randint ⑥ r=random.randint(0,9)
A.⑤①② B.⑤⑥④ C.③①④ D.③⑥②
4.執(zhí)行下列Python程序段后,變量n的值是( )
n=0
for i in range(1,4):
n+=i
A.4 B.3 C.6 D.1
二、填空題
5.Python語言用于實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的語句有______語句和while語句。
三、簡答題
6.列舉Python程序設(shè)計(jì)語言中,for循環(huán)和while循環(huán)的基本的格式。
四、操作題
7.編寫Python程序,實(shí)現(xiàn)以下功能:輸入兩個(gè)正整數(shù)a,b,輸出他們的最小公倍數(shù)。求最小公倍數(shù)的做法為:先算出數(shù)a和數(shù)b的最大公約數(shù)k,那么最小公倍數(shù)就為數(shù)a乘數(shù)b再除以數(shù)k。而求最大公約數(shù)的方法一般為輾轉(zhuǎn)相除法。它的具體做法是:用較大數(shù)除以較小數(shù),再用出現(xiàn)的余數(shù)(第一余數(shù))去除除數(shù),再用出現(xiàn)的余數(shù)(第二余數(shù))去除第一余數(shù),如此反復(fù),直到最后余數(shù)是e為止。如果是求兩個(gè)數(shù)的最大公約數(shù),那么最后的除數(shù)就是這兩個(gè)數(shù)的最大公約數(shù)。示例:123456和7890的最大公因數(shù)是6,這可由下列步驟(其中,“a % b”是指取a÷b的余數(shù))看出:
a b a % b
123456 7890 5106
7890 5106 2784
5106 2784 2322
2784 2322 462
2322 462 12
462 12 6
12 6 0
程序如下:
a = int(input("輸入第一個(gè)數(shù):")) b= int(input("輸入第二個(gè)數(shù):")) c= ① while ② : print("它們的最小公倍數(shù)是:",c//a)
(1)在劃線處填入合適的代碼_____、_____
(2)如果輸入的數(shù)分別為:27和15,則加框處語句共執(zhí)行了______次。
8.現(xiàn)今信息化時(shí)代,信息的傳輸十分迅速,足不出戶便知天下事。許多社交平臺都有設(shè)置本平臺的熱點(diǎn)排行榜,方便用戶了解正在發(fā)生的熱門事件。但社交平臺數(shù)量眾多,平臺用戶種類和數(shù)量也大不相同,導(dǎo)致不同平臺熱點(diǎn)的實(shí)際熱度大小也不同。小鐘為了確保自己知道的熱點(diǎn)是真正的熱點(diǎn),于是打算用功能強(qiáng)大的python把各個(gè)平臺的熱點(diǎn)排行榜進(jìn)行合并,形成自己的熱點(diǎn)排行榜。
為了熱點(diǎn)之間比較方便,小鐘設(shè)置了一個(gè)熱度值來衡量一個(gè)熱點(diǎn)的熱度大小,熱度值越大說明這個(gè)熱點(diǎn)的熱度越高。現(xiàn)在小鐘已經(jīng)獲得了如下兩個(gè)平臺的熱度值從小到大的排行榜,正當(dāng)他打算將之合并為一個(gè)從小到大的排行榜時(shí),卻被老師叫走了。于是他決定把這個(gè)小功能交給他的好朋友——你來實(shí)現(xiàn),你想到2種算法,請把下列程序填寫完整。
A P10 P9 P8 P7 P6 P5 P4 P3 P2 P1
11 66 116 329 438 582 652 714 756 925
B E10 E9 E8 E7 E6 E5 E4 E3 E2 E1
35 116 215 271 309 428 576 772 806 950
Python程序如下:
A= [11,66,116,329,438,582,652,714,756,925]
B = [35,116,215,271, (5)__,428,576,772,806,950]
算法一:
myRank =
i = 0
j = 0
while (i < len(A) and j < len(B)):
if (A[i] < B[j]):
(6)______
i += 1
else:
myRank.append(B[j])
j += 1
while (i < len(A)):
myRank.append(A[i])
i += 1
else:
while ((7)______):
myRank.append(B[j])
j += 1
print(myRank)
算法二:
myRank = [0]*(len(A)+len(B))
i = 0
j = 0
k = 0
while ((8)_____):
k = i+j
if (i >= len(A)):
myRank[k] = B[j]
j += 1
elif (j >= len(B)):
myRank[k] = A[i]
i += 1
elif ((9)_____):
myRank[k] = A[i]
i += 1
else:
myRank[k] = B[j]
j += 1
print(myRank)
9.閱讀程序。觀察使用隨機(jī)數(shù)求解百錢白雞問題的代碼并回答問題。
百千白雞問題是經(jīng)典的數(shù)學(xué)問題,原題為“雞翁一,值錢五;雞母一,值錢三;雞雛三,值錢一;百錢買百雞,則翁、母、雛各幾何?”翻譯過來,意思是公雞一個(gè)五塊錢,母雞一個(gè)三塊錢,小雞三個(gè)一塊錢,現(xiàn)在要用一百塊錢買一百只雞,問公雞、母雞、小雞各多少只?
import random
while True:
x=random.randrange(0,20)
y=random.randrange(0,33)
z=random.randrange(0,100)
if 5*x+3*y+z/3==100 and x+y+z==100:
print('公雞',x)
print('母雞',y)
print('小雞',z)
(1)Python中導(dǎo)入庫文件的命令是________。
(2)random.randrange(0,20)生成的隨機(jī)數(shù)的范圍是_________ 。
(3)如果不想寫類似random.randrange(0,20)這么長的句子,可以修改程序中的第一行為
________
(4)while True 的作用是______ 。
(5)如果while True造成程序無法停止,我們可以在程序中添加一行 _________。
10.閱讀程序。分析以下兩段Python程序并回答問題。
#程序1
i=1
while i<101:
print('把這句話打印100遍')
i+=1
#程序2
i=100
while i:
print('把這句話打印100遍')
i=i-2
(1)在程序1中,i+=1這句話的含義是______________。
(2)在程序1中,‘把這句話打印100遍 ’實(shí)際輸出了_____遍。
(3)在程序2中,i的初值是___。
(4)在程序2中,‘把這句話打印100遍 ’實(shí)際輸出了_____遍。
(5)在程序2中,while i 的含義是_________。
11.若兩個(gè)素?cái)?shù)之差為2,則該對素?cái)?shù)稱為雙胞胎數(shù),如3,5就是一對雙胞胎數(shù)。編寫python程序,實(shí)現(xiàn)如下功能:輸入n的值,統(tǒng)計(jì)顯示n以內(nèi)的所有雙胞胎數(shù)。程序運(yùn)行界面如圖所示:
實(shí)現(xiàn)上述功能的程序如下,請?jiān)趧澗€處填入合適的代碼。
def isprime(x):
for i in range(2,x):
if①__________:
return False
return True
n=int(input(“請輸入一個(gè)正整數(shù)n:”))
c=0
k=3
while k<=n-2:
if isprime(k) and②___________:
print(k,k+2)
③___________
k=k+1
print(“共有”+str(c)+“對雙胞胎數(shù)”)
12.若兩個(gè)素?cái)?shù)之差為 2,則該對素?cái)?shù)稱為雙胞胎數(shù),如 3,5 就是一對雙胞胎數(shù)。編寫 python 程序,實(shí)現(xiàn)如下功能:輸入 n 的值,統(tǒng)計(jì)顯示 n 以內(nèi)的所有雙胞胎數(shù)。程序運(yùn)行界面如圖所示:
實(shí)現(xiàn)上述功能的程序如下,請?jiān)趧澗€處填入合適的代碼。
import math
def isprime(x):
______
for i in range(2,int(math.sqrt(x))+1):
if x % i = = 0 :
f=False
return f
n=int(input("請輸入一個(gè)正整數(shù) n:"))
c=0
k=3
while k < = n-2:
if isprime( k ) and______________ :
c + = 1
print("第"+ str( c ) +"對雙胞胎數(shù):", k ,'和',k+2)
_______
print("共有"+str(c)+"對雙胞胎數(shù)")
劃線處①處應(yīng)該填入的語句為: ;
劃線處②處應(yīng)該填入的語句為: ;
劃線處③處應(yīng)該填入的語句為: 。
13.某字符轉(zhuǎn)置算法描述如下:
將字符串(均為大寫字符)s依次轉(zhuǎn)換為相對應(yīng)的數(shù)值(字符A~Z對應(yīng)數(shù)值1~26);
·轉(zhuǎn)換后的數(shù)值以K個(gè)數(shù)據(jù)為一段,將n個(gè)待處理的數(shù)據(jù)依次分割成若干段(最后一段不足部分用0來補(bǔ)充);
每一段中K個(gè)數(shù)據(jù)與K*K轉(zhuǎn)置矩陣進(jìn)行乘法運(yùn)算;
將乘法運(yùn)算得到的每一個(gè)結(jié)果值除以26求余數(shù),依次轉(zhuǎn)換成相應(yīng)字符(數(shù)值1~26對應(yīng)字符A~Z),最后按原始字符串長度輸出。
乘法運(yùn)算規(guī)則如下:
第i個(gè)元素c(i)=第j個(gè)元素a(j)*轉(zhuǎn)置矩陣第j行第i個(gè)元素b(t)的乘積之和(其中j=1,2…K)
例如:字符串s=PYTHON,區(qū)塊大小K=4,的轉(zhuǎn)置過程如下:
(1)根據(jù)算法描述,上述示例中,字符“N”的相乘結(jié)果(即圖中(★)處)為________。
(2)請?jiān)趧澗€處填入合適代碼。
Private Sub Commandl_Click()
Dim a(1 To 100)As Integer 存儲字符串,長度不超過100個(gè)字符
Dim b(1 To 100)As Integer 存儲轉(zhuǎn)置矩陣,長度不超過 10*10
Dim c(1 To 100)As Long
Dim s As String, tmp As String
Dim k As Integer, t As Integer, i As Integer, j As Integer
Dim n As Integer, m As Integer, lens As Integer
s=Textl. Text 在 Textl 中輸入原始字符串
k=Val(Text 2.Text) 在 Text 2 中輸入?yún)^(qū)塊大小K
Randomize
For i=1 To k^2
b(i)=Int(Rnd*9)+1
tmp=tmp十Str(b(i))
If i Mod k=0 Then
List 2. AddItem tmp
tmp="" .
End If
Next i
lens=Len(s):n=lens
For i=1 To n
tmp=Mid(s,i,1)
①__________
Listl. AddItem Str(a(i))
Next i
Do While n Mod k<>0
n=n十1
a(n)=0
Listl. AddItem Str(a(n))
Loop
For i=1 To n
m=(i―1)Mod k+1
t=1
Forj= ②__________
c(i)=a(j) * b((m-1) * k+t)+c(i)
t=t+1
Next j
Next i
For i=1 To n
List 3. AddItem Str(c(i))
Next i
s=″″
For i=1 To lens
③__________
s=s+Chr(t+64)}
Next i
Text 3.Text=s 在Text 3 中輸出轉(zhuǎn)置后的字符串
End Sub
參考答案
1.B
【詳解】
本題主要考查Python程序的執(zhí)行。分析程序可知,變量s1取出字符串s中的數(shù)字,依次放到s1中,s1='123';變量s2取出字符串s中的小寫字母,倒序放到s2中,s2='art',ans=s2+s1='art123',故程序執(zhí)行后,輸出的結(jié)果是art123,故本題選B選項(xiàng)。
2.B
【詳解】
本題主要考查Python程序的執(zhí)行。第一遍循環(huán),x = (0 + 2) * (0 + 3)=6;第二遍循環(huán)x = (6 + 2) * (6 + 3)=72,不滿足x<50,退出循環(huán),故運(yùn)行后,x的值為72,故本題選B選項(xiàng)。
3.B
【詳解】
本題主要考查Python程序的綜合應(yīng)用。使用隨機(jī)函數(shù)需要首先導(dǎo)入隨機(jī)函數(shù)庫,故第一空填from random import randint。random()方法返回隨機(jī)生成的一個(gè)實(shí)數(shù),它在[0,1)范圍內(nèi)。random.randint(a,b)用于生成一個(gè)指定范圍內(nèi)的整數(shù)。其中參數(shù)a是下限,參數(shù)b是上限,生成的隨機(jī)數(shù)n: a <= n <= b,需要隨機(jī)給10名選手各編一個(gè)0~9范圍內(nèi)的唯一序號,故第二空填 r=random.randint(0,9),此處確保生成唯一序號,將其標(biāo)記為True,故第三空填b[i]=True,故本題選B選項(xiàng)。
4.C
【詳解】
本題主要考查Python循環(huán)結(jié)構(gòu)。變量i的范圍1~3,循環(huán)體是n=n+i,故程序執(zhí)行后,n=n+i=0+1+2+3=6,故本題選C選項(xiàng)。
5.for
【詳解】
本題主要考查Python循環(huán)結(jié)構(gòu)。Python語言用于實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的語句有for語句和while語句。
6.for 循環(huán)結(jié)構(gòu)的基本格式:
for 循環(huán)變量 in 列表:
語句或語句組
While循環(huán)格式:
While(表達(dá)式):
語句或者語句組
【詳解】
本題考查循環(huán)結(jié)構(gòu)的基本格式
7.a(chǎn)*b b !=0 3
【詳解】
本題主要考查Python程序的綜合應(yīng)用。①求最小公倍數(shù)的做法為:先算出數(shù)a和數(shù)b的最大公約數(shù)k,那么最小公倍數(shù)就為數(shù)a乘數(shù)b再除以數(shù)k,此處先將a*b賦給變量c保存,故填a*b。②通過while循環(huán)求a和b的最大公約數(shù),條件是除數(shù)b不為0,故填b !=0。③第一遍循環(huán)r=27%15=12;第二遍循環(huán),15%12=3;第三遍12%3=0,循環(huán)結(jié)束,故加框處語句共執(zhí)行了3次。
8.309 myRank.append(A[i]) j < len(B) k
本題主要考查python編程。根據(jù)表格所示,列表B中第5個(gè)元素為309,因此①處為309;A[i] < B[j]時(shí),將列表末尾添加A[i],因此②處為myRank.append(A[i]);當(dāng)列表未結(jié)束時(shí),列表末尾添加相應(yīng)元素,因此③處為j < len(B);算法二中引入變量k,用以記錄i與j的和,當(dāng)k小于len(A)+len(B)-1說明兩列表未結(jié)束,因此④處為k
9.import 0~19(包括0和19) import random as r 讓程序無限循環(huán) break;
【詳解】
本題主要考查Python程序的執(zhí)行與調(diào)試。①Python中導(dǎo)入庫文件的命令是import,如import random。②random.randrange(0,20)生成的隨機(jī)數(shù)的范圍是0~19(包括0和19)。③如果不想寫類似random.randrange(0,20)這么長的句子,可以修改程序中的第一行為import random as r(給random取個(gè)簡單的別名)。④while True 的作用是讓程序無限循環(huán)。⑤如果while True造成程序無法停止,我們可以在程序中添加一行break;(滿足條件后,執(zhí)行break;可以跳出循環(huán))。
10.i=i+1 無數(shù)遍 100 無數(shù)遍 i!=0 或 i>0 或其他等價(jià)答案
【詳解】
本題主要考查Python程序的執(zhí)行與調(diào)試。①在程序1中,i+=1這句話的含義是i=i+1(即i遞增1)。②i的初值為1,while循環(huán)條件i<101為真,會一直執(zhí)行循環(huán)體,無法跳出循環(huán)體執(zhí)行i+=1,故‘把這句話打印100遍 ’實(shí)際輸出了無數(shù)遍。③在程序2中,i的初值是100。④i=100,while i(即while 100)一直為真,會一直執(zhí)行循環(huán)體,無法跳出循環(huán)體執(zhí)行i=i-2,故‘把這句話打印100遍 ’實(shí)際輸出了無數(shù)遍。⑤在程序2中,while i 的含義是i!=0 或 i>0 或其他等價(jià)答案
11.x%i==0或x//i==x/i或其他等價(jià)表達(dá)式 isprime(k+2)或isprime(k+2)==True c=c+1或c+=1
【詳解】
本題主要考查Python程序的執(zhí)行與調(diào)試。①isprime(x)函數(shù)判斷x是不是素?cái)?shù),此處通過for循環(huán)判斷(用x依次除i,看能不能整除,i的范圍時(shí)從2~x),故填x%i==0或x//i==x/i。②此處判斷相差2的兩個(gè)數(shù)是不是素?cái)?shù),若是,則輸出這兩個(gè)數(shù),故此處填isprime(k+2)或isprime(k+2)==True。③c用來統(tǒng)計(jì)雙胞胎數(shù)的對數(shù),若滿足是雙胞胎數(shù)的條件,故此處填c=c+1或c+=1。
12.f = True isprime(k+2) k=k+1 或 k+=1 或 k=k+2 或 k+=2
【詳解】
本題主要考查Python程序的執(zhí)行與調(diào)試。①isprime(x)用來判斷x是不是素?cái)?shù),通過用x整除2~int(math.sqrt(x)),如果余數(shù)為0則表明該數(shù)不是素?cái)?shù),賦值f為假退出循環(huán),f的初值為True,故第一空填f = True。②若兩個(gè)素?cái)?shù)之差為 2,則該對素?cái)?shù)稱為雙胞胎數(shù),此處判斷相差為2的兩個(gè)數(shù)是不是素?cái)?shù),故第二空填isprime(k+2)。③素?cái)?shù)都是奇數(shù),此處需要更新k的值繼續(xù)循環(huán)判斷,可以將k的值遞增1或遞增2,故填k=k+1 或 k+=1 或 k=k+2 或 k+=2。
13.89 ①a(i)=Asc(tmp)-64或a(i)=Asc(tmp)-Asc("A")+1 ②i–m+1To i–m+k ③t=(c(i)–1) Mod 26+1
【詳解】
本題考查乘法運(yùn)算規(guī)則的理解以及轉(zhuǎn)置矩陣中行列數(shù)據(jù)的讀取。(1)根據(jù)算法描述,圖中(1)處的值為15×5+14×1+0×2+0×9=89。(2)程序先隨機(jī)生成數(shù)組b,其下標(biāo)為1到k×k,并以行列的形式顯示在列表框list2中(即為轉(zhuǎn)置矩陣),然后讀取大寫字符串s中的每個(gè)字符,并將每個(gè)字符轉(zhuǎn)換成相應(yīng)字母表中的位置存儲在數(shù)組a中。代碼①處為字符轉(zhuǎn)成相應(yīng)的字母表中位置值,下方代碼將a(i)輸出在列表框listl中,故此處應(yīng)獲取a(i)的值。根據(jù)題干描述“字符A~Z對應(yīng)數(shù)值1~26”,此處為將tmp獲取的字符通過Asc函數(shù)進(jìn)行轉(zhuǎn)換,語句為“a(i)=Asc(tmp)-64”,還可以是“a(i)=Asc(tmp)-Asc(″A″)+1”。代碼②處為循環(huán)變量j的取值范圍,根據(jù)乘法規(guī)則,變量j的范圍是每一段中的1到k之間的值,需要獲取每一段的起始位置下標(biāo),結(jié)合上文得到的m值,可得循環(huán)變量的范圍是“i-m+1 To i-m十k”。代碼③處是將計(jì)算結(jié)果c(i)按原長度轉(zhuǎn)換成相應(yīng)大寫字符,計(jì)算結(jié)果要求除以26取余,若直接寫成c(i)Mod 26,則導(dǎo)致數(shù)值26的結(jié)果為0,因此需要先減1,Mod后再加1這樣的處理技巧,因此答案為“(c(i)-1)Mod 26+1”。
展開更多......
收起↑
資源預(yù)覽