資源簡介 字符串專題練習(xí)一、選擇題下列Python字符串不合法的是:(D)A.”I love ‘China’” B.’I “l(fā)ove” China’C.’I love \’China\’’ D.’I love ‘China”解析:選D,字符串一般采用單引號(hào)、雙引號(hào)或三引號(hào)加以界定。當(dāng)使用單引號(hào)時(shí),雙引號(hào)可以作為字符串中的一部分,反之亦然;也可以使用反斜杠轉(zhuǎn)義符輸出單引號(hào)或雙引號(hào)。2.有如下程序段:S=“2022 Hope To Get Out Of The Epidemic”t=“”for i in s:if i<“a” or i>“z”:t=””t=i+tprint(t)該程序運(yùn)行后,最后顯示的內(nèi)容是( A )A.cimedipE B.cimedip C.cimed D.cime解析:選A,該程序中語句“if i<“a” or i>“z”:;t=“””的功能是字符i為非小寫字母時(shí),變量t就清空。因此在“Epidemic”出現(xiàn)前,變量t中的內(nèi)容為空。這樣變量t中最后的內(nèi)容為“Epidemic”的重新組合。語句t=i+t的功能就是將“Epidemic”進(jìn)行逆向組合。有如下Python程序段:a=”Beautiful is better than ugly.”.split()b=””.join(a)則下列說法正確的是:(B)a[4]的值為“ugly”,b[4]的值為“t”a[4]的值為“ugly.”,b[4]的值為“t”a[-4]的值為“is”,b[-4]的值為“u”a[-4]的值為“Beautiful”,b[-4]的值為“g”解析:選B,a[4]的值為“ugly.”;b[4]的值為“t”;a[-4]的值為“is”;b[-4]的值為“g”。4.有如下python 程序段:def fun(a,b):n=min(len(a),len(b))for i in range(n):if a[i]>b[i]:return aelif a[i]return bif len(a)>len(b):return aelse:return bprint(fun(“126”,”26”))則程序執(zhí)行后,輸出的結(jié)果為:(D)A.a B.b C.126 D.26解析:選D,自定義函數(shù)fun()的功能是比較字符串a(chǎn) 和b的大小,并返回較大的字符串,因?yàn)椤?26”<“26”,故返回“26”。5.有如下python程序段:a=input()t,s=0,0for c in a[::-1]:if c.isdigit():t=t*10+int(c)else:s+=tt=0print(t)當(dāng)輸入“123ABC456”時(shí),程序輸出結(jié)果為: (A)A.321 B.654 C.123 D.975解析:選A,程序的功能是逆序提取字符串中的連續(xù)整數(shù)并求整數(shù)和,注意程序輸出的是變量t的值。6.有如下Python程序段:text=”床前明月光,疑是地上霜。舉頭望明月,低頭思故鄉(xiāng)。”text=text.replace(“。”,“,”)ans=[s[0] for s in text.split(“,”) if s]ans=“”.join(ans)則程序執(zhí)行后,ans的值為(C)A.“床前明月光” B.“床前明月”C.“床疑舉低” D.”舉頭望明”解析:選C,程序的功能是獲取藏頭詩。具體做法是先用“,”替換“。”,這樣所有的分隔符均變成“,”,再用“,”將text分割成列表(注意最后一個(gè)列表元素為空串),并去列表元素的首字符,憑借成藏頭詩。7.有如下python程序段:text=“It is too old to learn.”ans=text[:6]+“never”+text[6:]print(ans)則程序執(zhí)行后,輸出的結(jié)果為(C)It is too old to learnIt is never too old to learnIt is nevertoo old to learnIt isnever too old to learn解析:選C,text[:6]=“It is”,text[6:]=“too old to learn.”,因?yàn)椤皀ever”兩邊都沒有空格,故輸出It is nevertoo old to learn.。8. 有如下Python程序段:for ch in “I have a dream”:if ch not in”aoeiu”:continueprint(ch,end=””)則程序執(zhí)行后,輸出的結(jié)果是(D)A.無輸出 B.I have a dreamC.I hv drm D.aeaea解析:選D,continue語句的作用是終止本次循環(huán),并忽略continue之后的所有語句,直接回到循環(huán)的頂端,提前進(jìn)入下一次循環(huán),故程序只輸出包含在“aoeiu”中的字母。9. 有如下python程序段:s=“Python3.8”ans=“”for ch in s:if ch.isupper():ans+=ch.lower()elif ch.islower():ans+=ch.upper()else:ans+=chprint(ans)則程序執(zhí)行后,輸出的結(jié)果為(D)A.Python B.Python3.8C.pYTHON D.pYTHON3.8解析:選D,程序的功能是將大小寫字母互相轉(zhuǎn)換,其他字符保持不變。10. 有如下程序段:s=””ch=”GaozhouKG2021”n=len(ch)for i in range(1,n,2):c=ch[i]if “A”<=c<=“Z”:c=chr((ord(c)-ord(“A”)+2)%26+65)elif “a”<=c<=“z”:c=chr((ord(c)-ord(“a”)+2)%26+97)else:c=chr(ord(c)+1)s=c+sprint(s)該程序運(yùn)行后,最后顯示的內(nèi)容為(D)A.IqjwI12 B.21IwjqI C.cbqM33 D.33Mqbc解析:選D,該程序的功能是將字符串的第1,3,5,…個(gè)字符在各自的范疇內(nèi)向后移動(dòng)2個(gè)位置(即如果是大寫字母、小寫字母、數(shù)字,各自向后移動(dòng)2個(gè)位置。注:每個(gè)范疇都看成一個(gè)圈)。最后將它們進(jìn)行逆向連接。11.有如下python程序段:a=“110000010111010”if len(a)%4!=0:a=(4-len(a)%4)*“0”+a)s=“0123456789ABCDEF”ans=[]for i in range(0,len(a),4):num=int(a[i:i+4],2)ans.append(s[num])print(‘’.join(ans))已知int()函數(shù)用于將一個(gè)字符串或數(shù)字轉(zhuǎn)換為整型,例如int(“101”,2)用于將二進(jìn)制數(shù)101轉(zhuǎn)換為十進(jìn)制數(shù),結(jié)果為5,則程序執(zhí)行后,輸出的結(jié)果為(A)A.60BAB.C174C.182E8D.305D解析:選A,程序功能是將二進(jìn)制數(shù)轉(zhuǎn)換成十六進(jìn)制數(shù)。按照從低位到高位的(從右往左)的順序,每4位二進(jìn)制數(shù)轉(zhuǎn)換成1位十六進(jìn)制數(shù),不足4位則在高位補(bǔ)0。“110000010111010”補(bǔ)0的結(jié)果為“0110000010111010”,轉(zhuǎn)換成十六進(jìn)制數(shù)為60BA。12. 回文串是一個(gè)對(duì)稱串,從左向右讀與從右向左讀是一樣的。例如:“aba”從左向右讀是“aba”,從右向左讀也是“aba”。下面的Python程序的功能就是將一個(gè)字符串轉(zhuǎn)換成回文串。如輸入“abc”,輸出“abccba”。程序如下:s=input(“輸入一個(gè)串”)s1=si=0while i______(1)_____________(2)______i+=1print(“回文串:”,s1)在橫線(1)與(2)處可選的語句如下:ch=s[len(s)-i]ch=s[len(s)-1-i]s1=ch+s1s1=s1+ch則完成此程序正確的語句為(B)A.①③ B.②④ C.①④ D.②③解析:選B,產(chǎn)生回文串,先將原串復(fù)制到一個(gè)新的變量中,然后在新變量的后面依次連接上原串的最后1個(gè)字符,倒數(shù)第2個(gè)字符,……,一直到原串的第1個(gè)字符連接上為止。二、非選擇題13.在字符串s中找連續(xù)數(shù)字(僅限1位數(shù))之和為n的子串,若存在多個(gè)子串符合要求,則輸出子串最長的那一串,如字符串“142176”中,和為14的子串有“4217”與“176”,子串“4217”的長度大于子串“176”的長度,最終輸出子串“4217”。假設(shè)所給字符串中必存在滿足條件的子串,實(shí)現(xiàn)該功能的python程序段如下,請(qǐng)?jiān)趧澗€處填上合適的代碼:s=input(“輸入數(shù)字字符串:”)n=int(“input(“輸入數(shù)值和:”))n=14i=0;sum=0;st=“”for j in range(len(s)):____(1)_______sum+=ch1while sum>n:ch2=int(s[i])____(2)_________i+=1if sum==n and____(3)________:st=s[i:j+1]print(st)答案:(1)ch1=int(s[j]) (2)sum-=ch2 (3)len(st)<(j-i+1)解析:查找連續(xù)單個(gè)數(shù)值之和等于指定值的最長序列。本程序具有隊(duì)列的思想,將當(dāng)前數(shù)值累加到sum中后,sum值還沒有超過指定值n,則將后續(xù)的數(shù)字的值加入;若sum的值超過指定值n,則將最先進(jìn)來的數(shù)值減去;若sum的值等于指定值且長度超過原有的記錄,則替換當(dāng)前記錄。14. 某字符加密法:先輸入英文字符串(大小寫均可,長度不超過100),依次將其中字符的ASCII碼值轉(zhuǎn)化為7位二進(jìn)制數(shù),形成輸入碼并以矩陣形式輸出;將7位二進(jìn)制數(shù)進(jìn)行加密處理,先進(jìn)行水平翻轉(zhuǎn),再將翻轉(zhuǎn)后的二進(jìn)制數(shù)奇數(shù)位上的數(shù)字取反,0轉(zhuǎn)1、1轉(zhuǎn)0;最后將加密后的7位二進(jìn)制數(shù)轉(zhuǎn)化為十進(jìn)制數(shù)作為密文顯示。按上述要求,編寫一個(gè)Python程序,功能如下:輸入英文字符串,運(yùn)行程序輸出對(duì)應(yīng)的輸入碼,并顯示密文。程序運(yùn)行界面如圖所示。若輸入的英文字符串是“Ok”,則加密后的密文是______________________________。實(shí)現(xiàn)上述功能的Python程序如下,請(qǐng)?jiān)趧澗€處填入合適的代碼。‘’’依次生成并輸出英文字符串text各字符對(duì)應(yīng)的7位二進(jìn)制數(shù)‘’’def show_code(text):code=[[0]*7 for i in range(len(text))]for i in range(len(text)):n=ord(text[i])j=0s=””while n>0:code[i][6-j]=n%2s=str(n%2)+sn= ______①_______j=j+1print(f”{text[i]}:{s}”)return code‘’’對(duì)各字符對(duì)應(yīng)的7位二進(jìn)制數(shù)按規(guī)則進(jìn)行加密處理,并返回密文’’’def encode(plain_code):secret_code=[ ]for i in range(len(plain_code)):s=0for j in range(7):num=___②___________if j%2==0:num=1-nums=s*2+numsecret_code.append(______③________)return “”.join(secret_code)text=input(“請(qǐng)輸入英文字符串:”)print(“輸入碼:”)plain_code=show_code(text)print(f”密文:{encode(plain_code)}”)答案:(1)44 62(2)①n//2 ②plain_code[i][6-j] ③str(s)解析:自定義函數(shù)show_code(text)的作用是依次生成并輸出英文字符串text各字符對(duì)應(yīng)的7位二進(jìn)制數(shù),n就是字符的ASCII碼值,根據(jù)進(jìn)制轉(zhuǎn)換算法可知第①空答案為n//2;自定義函數(shù)encode(plain_code)的作用是將各字符對(duì)應(yīng)的7位二進(jìn)制數(shù)按規(guī)則進(jìn)行加密處理,因?yàn)橐冗M(jìn)行水平翻轉(zhuǎn),故num不是第j位上的二進(jìn)制數(shù),而是j的對(duì)稱位的二進(jìn)制數(shù),則第②空答案為plain_code[i][6-j];最后將十進(jìn)制數(shù)密文添加到列表secret_code中,并拼接成字符串返回,注意第③空答案不能寫成s,因?yàn)椴荒苤苯影颜麛?shù)拼接成字符串。字符串專題練習(xí)一、選擇題下列Python字符串不合法的是:( )A.”I love ‘China’” B.’I “l(fā)ove” China’C.’I love \’China\’’ D.’I love ‘China”2.有如下程序段:S=“2022 Hope To Get Out Of The Epidemic”t=“”for i in s:if i<“a” or i>“z”:t=””t=i+tprint(t)該程序運(yùn)行后,最后顯示的內(nèi)容是( )A.cimedipE B.cimedip C.cimed D.cime有如下Python程序段:a=”Beautiful is better than ugly.”.split()b=””.join(a)則下列說法正確的是:( )a[4]的值為“ugly”,b[4]的值為“t”a[4]的值為“ugly.”,b[4]的值為“t”a[-4]的值為“is”,b[-4]的值為“u”a[-4]的值為“Beautiful”,b[-4]的值為“g”4.有如下python 程序段:def fun(a,b):n=min(len(a),len(b))for i in range(n):if a[i]>b[i]:return aelif a[i]return bif len(a)>len(b):return aelse:return bprint(fun(“126”,”26”))則程序執(zhí)行后,輸出的結(jié)果為:( )A.a B.b C.126 D.265.有如下python程序段:a=input()t,s=0,0for c in a[::-1]:if c.isdigit():t=t*10+int(c)else:s+=tt=0print(t)當(dāng)輸入“123ABC456”時(shí),程序輸出結(jié)果為: ( )A.321 B.654 C.123 D.9756.有如下Python程序段:text=”床前明月光,疑是地上霜。舉頭望明月,低頭思故鄉(xiāng)。”text=text.replace(“。”,“,”)ans=[s[0] for s in text.split(“,”) if s]ans=“”.join(ans)則程序執(zhí)行后,ans的值為( )A.“床前明月光” B.“床前明月”C.“床疑舉低” D.”舉頭望明”7.有如下python程序段:text=“It is too old to learn.”ans=text[:6]+“never”+text[6:]print(ans)則程序執(zhí)行后,輸出的結(jié)果為( )It is too old to learnIt is never too old to learnIt is nevertoo old to learnIt isnever too old to learn8. 有如下Python程序段:for ch in “I have a dream”:if ch not in”aoeiu”:continueprint(ch,end=””)則程序執(zhí)行后,輸出的結(jié)果是( )A.無輸出 B.I have a dreamC.I hv drm D.aeaea9. 有如下python程序段:s=“Python3.8”ans=“”for ch in s:if ch.isupper():ans+=ch.lower()elif ch.islower():ans+=ch.upper()else:ans+=chprint(ans)則程序執(zhí)行后,輸出的結(jié)果為( )A.Python B.Python3.8C.pYTHON D.pYTHON3.810. 有如下程序段:s=””ch=”GaozhouKG2021”n=len(ch)for i in range(1,n,2):c=ch[i]if “A”<=c<=“Z”:c=chr((ord(c)-ord(“A”)+2)%26+65)elif “a”<=c<=“z”:c=chr((ord(c)-ord(“a”)+2)%26+97)else:c=chr(ord(c)+1)s=c+sprint(s)該程序運(yùn)行后,最后顯示的內(nèi)容為( )A.IqjwI12 B.21IwjqI C.cbqM33 D.33Mqbc11.有如下python程序段:a=“110000010111010”if len(a)%4!=0:a=(4-len(a)%4)*“0”+a)s=“0123456789ABCDEF”ans=[]for i in range(0,len(a),4):num=int(a[i:i+4],2)ans.append(s[num])print(‘’.join(ans))已知int()函數(shù)用于將一個(gè)字符串或數(shù)字轉(zhuǎn)換為整型,例如int(“101”,2)用于將二進(jìn)制數(shù)101轉(zhuǎn)換為十進(jìn)制數(shù),結(jié)果為5,則程序執(zhí)行后,輸出的結(jié)果為( )A.60BAB.C174C.182E8D.305D12. 回文串是一個(gè)對(duì)稱串,從左向右讀與從右向左讀是一樣的。例如:“aba”從左向右讀是“aba”,從右向左讀也是“aba”。下面的Python程序的功能就是將一個(gè)字符串轉(zhuǎn)換成回文串。如輸入“abc”,輸出“abccba”。程序如下:s=input(“輸入一個(gè)串”)s1=si=0while i______(1)_____________(2)______i+=1print(“回文串:”,s1)在橫線(1)與(2)處可選的語句如下:ch=s[len(s)-i]ch=s[len(s)-1-i]s1=ch+s1s1=s1+ch則完成此程序正確的語句為( )A.①③ B.②④ C.①④ D.②③二、非選擇題13.在字符串s中找連續(xù)數(shù)字(僅限1位數(shù))之和為n的子串,若存在多個(gè)子串符合要求,則輸出子串最長的那一串,如字符串“142176”中,和為14的子串有“4217”與“176”,子串“4217”的長度大于子串“176”的長度,最終輸出子串“4217”。假設(shè)所給字符串中必存在滿足條件的子串,實(shí)現(xiàn)該功能的python程序段如下,請(qǐng)?jiān)趧澗€處填上合適的代碼:s=input(“輸入數(shù)字字符串:”)n=int(“input(“輸入數(shù)值和:”))n=14i=0;sum=0;st=“”for j in range(len(s)):____(1)_______sum+=ch1while sum>n:ch2=int(s[i])____(2)_________i+=1if sum==n and____(3)________:st=s[i:j+1]print(st)14. 某字符加密法:先輸入英文字符串(大小寫均可,長度不超過100),依次將其中字符的ASCII碼值轉(zhuǎn)化為7位二進(jìn)制數(shù),形成輸入碼并以矩陣形式輸出;將7位二進(jìn)制數(shù)進(jìn)行加密處理,先進(jìn)行水平翻轉(zhuǎn),再將翻轉(zhuǎn)后的二進(jìn)制數(shù)奇數(shù)位上的數(shù)字取反,0轉(zhuǎn)1、1轉(zhuǎn)0;最后將加密后的7位二進(jìn)制數(shù)轉(zhuǎn)化為十進(jìn)制數(shù)作為密文顯示。按上述要求,編寫一個(gè)Python程序,功能如下:輸入英文字符串,運(yùn)行程序輸出對(duì)應(yīng)的輸入碼,并顯示密文。程序運(yùn)行界面如圖所示。若輸入的英文字符串是“Ok”,則加密后的密文是______________________________。實(shí)現(xiàn)上述功能的Python程序如下,請(qǐng)?jiān)趧澗€處填入合適的代碼。‘’’依次生成并輸出英文字符串text各字符對(duì)應(yīng)的7位二進(jìn)制數(shù)‘’’def show_code(text):code=[[0]*7 for i in range(len(text))]for i in range(len(text)):n=ord(text[i])j=0s=””while n>0:code[i][6-j]=n%2s=str(n%2)+sn= ______①_______j=j+1print(f”{text[i]}:{s}”)return code‘’’對(duì)各字符對(duì)應(yīng)的7位二進(jìn)制數(shù)按規(guī)則進(jìn)行加密處理,并返回密文’’’def encode(plain_code):secret_code=[ ]for i in range(len(plain_code)):s=0for j in range(7):num=___②___________if j%2==0:num=1-nums=s*2+numsecret_code.append(______③________)return “”.join(secret_code)text=input(“請(qǐng)輸入英文字符串:”)print(“輸入碼:”)plain_code=show_code(text)print(f”密文:{encode(plain_code)}”) 展開更多...... 收起↑ 資源列表 字符串專項(xiàng)練習(xí).docx 字符串專項(xiàng)練習(xí)解析.docx 縮略圖、資源來源于二一教育資源庫