资源简介 字符串专题练习一、选择题下列Python字符串不合法的是:(D)A.”I love ‘China’” B.’I “love” China’C.’I love \’China\’’ D.’I love ‘China”解析:选D,字符串一般采用单引号、双引号或三引号加以界定。当使用单引号时,双引号可以作为字符串中的一部分,反之亦然;也可以使用反斜杠转义符输出单引号或双引号。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)该程序运行后,最后显示的内容是( A )A.cimedipE B.cimedip C.cimed D.cime解析:选A,该程序中语句“if i<“a” or i>“z”:;t=“””的功能是字符i为非小写字母时,变量t就清空。因此在“Epidemic”出现前,变量t中的内容为空。这样变量t中最后的内容为“Epidemic”的重新组合。语句t=i+t的功能就是将“Epidemic”进行逆向组合。有如下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”))则程序执行后,输出的结果为:(D)A.a B.b C.126 D.26解析:选D,自定义函数fun()的功能是比较字符串a 和b的大小,并返回较大的字符串,因为“126”<“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)当输入“123ABC456”时,程序输出结果为: (A)A.321 B.654 C.123 D.975解析:选A,程序的功能是逆序提取字符串中的连续整数并求整数和,注意程序输出的是变量t的值。6.有如下Python程序段:text=”床前明月光,疑是地上霜。举头望明月,低头思故乡。”text=text.replace(“。”,“,”)ans=[s[0] for s in text.split(“,”) if s]ans=“”.join(ans)则程序执行后,ans的值为(C)A.“床前明月光” B.“床前明月”C.“床疑举低” D.”举头望明”解析:选C,程序的功能是获取藏头诗。具体做法是先用“,”替换“。”,这样所有的分隔符均变成“,”,再用“,”将text分割成列表(注意最后一个列表元素为空串),并去列表元素的首字符,凭借成藏头诗。7.有如下python程序段:text=“It is too old to learn.”ans=text[:6]+“never”+text[6:]print(ans)则程序执行后,输出的结果为(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.”,因为“never”两边都没有空格,故输出It is nevertoo old to learn.。8. 有如下Python程序段:for ch in “I have a dream”:if ch not in”aoeiu”:continueprint(ch,end=””)则程序执行后,输出的结果是(D)A.无输出 B.I have a dreamC.I hv drm D.aeaea解析:选D,continue语句的作用是终止本次循环,并忽略continue之后的所有语句,直接回到循环的顶端,提前进入下一次循环,故程序只输出包含在“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)则程序执行后,输出的结果为(D)A.Python B.Python3.8C.pYTHON D.pYTHON3.8解析:选D,程序的功能是将大小写字母互相转换,其他字符保持不变。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)该程序运行后,最后显示的内容为(D)A.IqjwI12 B.21IwjqI C.cbqM33 D.33Mqbc解析:选D,该程序的功能是将字符串的第1,3,5,…个字符在各自的范畴内向后移动2个位置(即如果是大写字母、小写字母、数字,各自向后移动2个位置。注:每个范畴都看成一个圈)。最后将它们进行逆向连接。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()函数用于将一个字符串或数字转换为整型,例如int(“101”,2)用于将二进制数101转换为十进制数,结果为5,则程序执行后,输出的结果为(A)A.60BAB.C174C.182E8D.305D解析:选A,程序功能是将二进制数转换成十六进制数。按照从低位到高位的(从右往左)的顺序,每4位二进制数转换成1位十六进制数,不足4位则在高位补0。“110000010111010”补0的结果为“0110000010111010”,转换成十六进制数为60BA。12. 回文串是一个对称串,从左向右读与从右向左读是一样的。例如:“aba”从左向右读是“aba”,从右向左读也是“aba”。下面的Python程序的功能就是将一个字符串转换成回文串。如输入“abc”,输出“abccba”。程序如下:s=input(“输入一个串”)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,产生回文串,先将原串复制到一个新的变量中,然后在新变量的后面依次连接上原串的最后1个字符,倒数第2个字符,……,一直到原串的第1个字符连接上为止。二、非选择题13.在字符串s中找连续数字(仅限1位数)之和为n的子串,若存在多个子串符合要求,则输出子串最长的那一串,如字符串“142176”中,和为14的子串有“4217”与“176”,子串“4217”的长度大于子串“176”的长度,最终输出子串“4217”。假设所给字符串中必存在满足条件的子串,实现该功能的python程序段如下,请在划线处填上合适的代码:s=input(“输入数字字符串:”)n=int(“input(“输入数值和:”))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)解析:查找连续单个数值之和等于指定值的最长序列。本程序具有队列的思想,将当前数值累加到sum中后,sum值还没有超过指定值n,则将后续的数字的值加入;若sum的值超过指定值n,则将最先进来的数值减去;若sum的值等于指定值且长度超过原有的记录,则替换当前记录。14. 某字符加密法:先输入英文字符串(大小写均可,长度不超过100),依次将其中字符的ASCII码值转化为7位二进制数,形成输入码并以矩阵形式输出;将7位二进制数进行加密处理,先进行水平翻转,再将翻转后的二进制数奇数位上的数字取反,0转1、1转0;最后将加密后的7位二进制数转化为十进制数作为密文显示。按上述要求,编写一个Python程序,功能如下:输入英文字符串,运行程序输出对应的输入码,并显示密文。程序运行界面如图所示。若输入的英文字符串是“Ok”,则加密后的密文是______________________________。实现上述功能的Python程序如下,请在划线处填入合适的代码。‘’’依次生成并输出英文字符串text各字符对应的7位二进制数‘’’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‘’’对各字符对应的7位二进制数按规则进行加密处理,并返回密文’’’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(“请输入英文字符串:”)print(“输入码:”)plain_code=show_code(text)print(f”密文:{encode(plain_code)}”)答案:(1)44 62(2)①n//2 ②plain_code[i][6-j] ③str(s)解析:自定义函数show_code(text)的作用是依次生成并输出英文字符串text各字符对应的7位二进制数,n就是字符的ASCII码值,根据进制转换算法可知第①空答案为n//2;自定义函数encode(plain_code)的作用是将各字符对应的7位二进制数按规则进行加密处理,因为要先进行水平翻转,故num不是第j位上的二进制数,而是j的对称位的二进制数,则第②空答案为plain_code[i][6-j];最后将十进制数密文添加到列表secret_code中,并拼接成字符串返回,注意第③空答案不能写成s,因为不能直接把整数拼接成字符串。字符串专题练习一、选择题下列Python字符串不合法的是:( )A.”I love ‘China’” B.’I “love” 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)该程序运行后,最后显示的内容是( )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”))则程序执行后,输出的结果为:( )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)当输入“123ABC456”时,程序输出结果为: ( )A.321 B.654 C.123 D.9756.有如下Python程序段:text=”床前明月光,疑是地上霜。举头望明月,低头思故乡。”text=text.replace(“。”,“,”)ans=[s[0] for s in text.split(“,”) if s]ans=“”.join(ans)则程序执行后,ans的值为( )A.“床前明月光” B.“床前明月”C.“床疑举低” D.”举头望明”7.有如下python程序段:text=“It is too old to learn.”ans=text[:6]+“never”+text[6:]print(ans)则程序执行后,输出的结果为( )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=””)则程序执行后,输出的结果是( )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)则程序执行后,输出的结果为( )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)该程序运行后,最后显示的内容为( )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()函数用于将一个字符串或数字转换为整型,例如int(“101”,2)用于将二进制数101转换为十进制数,结果为5,则程序执行后,输出的结果为( )A.60BAB.C174C.182E8D.305D12. 回文串是一个对称串,从左向右读与从右向左读是一样的。例如:“aba”从左向右读是“aba”,从右向左读也是“aba”。下面的Python程序的功能就是将一个字符串转换成回文串。如输入“abc”,输出“abccba”。程序如下:s=input(“输入一个串”)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中找连续数字(仅限1位数)之和为n的子串,若存在多个子串符合要求,则输出子串最长的那一串,如字符串“142176”中,和为14的子串有“4217”与“176”,子串“4217”的长度大于子串“176”的长度,最终输出子串“4217”。假设所给字符串中必存在满足条件的子串,实现该功能的python程序段如下,请在划线处填上合适的代码:s=input(“输入数字字符串:”)n=int(“input(“输入数值和:”))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码值转化为7位二进制数,形成输入码并以矩阵形式输出;将7位二进制数进行加密处理,先进行水平翻转,再将翻转后的二进制数奇数位上的数字取反,0转1、1转0;最后将加密后的7位二进制数转化为十进制数作为密文显示。按上述要求,编写一个Python程序,功能如下:输入英文字符串,运行程序输出对应的输入码,并显示密文。程序运行界面如图所示。若输入的英文字符串是“Ok”,则加密后的密文是______________________________。实现上述功能的Python程序如下,请在划线处填入合适的代码。‘’’依次生成并输出英文字符串text各字符对应的7位二进制数‘’’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‘’’对各字符对应的7位二进制数按规则进行加密处理,并返回密文’’’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(“请输入英文字符串:”)print(“输入码:”)plain_code=show_code(text)print(f”密文:{encode(plain_code)}”) 展开更多...... 收起↑ 资源列表 字符串专项练习.docx 字符串专项练习解析.docx