实验07(字符串)
一、课内实验题(共10小题,84分)
题型得分 84
【描述】
脱氧核糖核酸(DNA)由两条互补的碱基链以双螺旋的方式结合而成。而构成DNA的碱基共有4种,分别为腺瞟呤(A)、鸟嘌呤(G)、胸腺嘧啶(T)和胞嘧啶(C)。在两条互补碱基链的对应位置上,腺瞟呤总是和胸腺嘧啶配对,鸟嘌呤总是和胞嘧啶配对。你的任务就是根据一条单链上的碱基序列,给出对应的互补链上的碱基序列。
【输入】
第一行是一个正整数n,表明共有n条要求解的碱基链。
以下共有n行,每行用一个字符串表示一条碱基链。这个字符串只含有大写字母A、T、G、C,分别表示腺瞟呤、胸腺嘧啶、鸟嘌呤和胞嘧啶。每条碱基链的长度都不超过255。
【输出】
共有n行,每行为一个只含有大写字母A、T、G、C的字符串。分别为与输入的各碱基链互补的碱基链。
【输入示例】
5
ATATGGATGGTGTTTGGCTCTG
TCTCCGGTTGATT
ATATCTTGCGCTCTTGATTCGCATATTCT
GCGTTTCGTTGCAA
TTAACGCACAACCTAGACTT
【输出示例】
TATACCTACCACAAACCGAGAC
AGAGGCCAACTAA
TATAGAACGCGAGAACTAAGCGTATAAGA
CGCAAAGCAACGTT
AATTGCGTGTTGGATCTGAA
【来源】
《Python程序设计基础》第5章编程题1。
(10分)
我的答案:
n=int(input())
for i in range(n):
s=input()
for ch in s:
if ch=='A':
print('T',end='')
if ch=='T':
print('A',end='')
if ch=='C':
print('G',end='')
if ch=='G':
print('C',end='')
print('\n')
题目得分 10
【描述】
输入一个字符串,统计并输出该字符串中26个英文字母(不区分大小写)出现的次数。
【输入】
输入一个字符串。
【输出】
分行输出26个英文字母(不区分大小写)出现的次数。
【输入示例】
I am a student.
【输出示例】
a:2
d:1
e:1
i:1
m:1
n:1
s:1
t:2
u:1
【来源】
《Python程序设计基础》第5章编程题2。(10分)
我的答案:
s=input()
s=s.lower(s)
dic=dict()
d={}
s=set()
s=input()
s=s.lower()
s=s.replace(' ','')
s=s.replace('.','')
s2=sorted(s)
d=dict()
for x in s2:
if x not in d.keys():
d[x]=1
else:
d[x]=d[x]+1
for i in d:
print(i+':'+str(d[i]))
题目得分 10
【描述】
编写程序,统计并输出某给定字符在给定字符串中出现的次数。
【输入】
第一行给出一个以回车结束的字符串;第二行输入一个字符。
【输出】
在一行中输出给定字符在给定字符串中出现的次数。
【输入示例】
programming is More fun!
m
【输出示例】
2
(2分)
我的答案:
s=input()
p=input()
print(s.count(p))
题目得分 2
【描述】
编写程序,从给定字符串中查找某指定的字符。
【输入】
第一行是一个待查找的字符。第二行是一个以回车结束的非空字符串。
【输出】
如果找到,在一行内按照格式"index = 下标"输出该字符在字符串中所对应的最大下标(下标从0开始);否则输出"Not Found"。
【输入示例】
m
programming
【输出示例】
index = 7
(2分)
我的答案:
p=input()
s=input()
r=s.rfind(p)
if r>0:
print("index = " + str(s.rfind(p)))
else:
print("Not Found")
题目得分 2
【描述】
输入5个字符串,输出其中最大的字符串。
【输入】
输入5个字符串。
【输出】
输出5个字符串中最大的字符串。
【输入示例】
red
blue
yellow
green
purple
【输出示例】
yellow
【来源】
《Python程序设计基础》第5章编程题3。
(10分)
我的答案:
s1=input()
s2=input()
s3=input()
s4=input()
s5=input()
max=s1
if s2>max:
max=s2
if s3>max:
max=s3
if s4>max:
max=s4
if s5 > max:
max=s5
print(max)
题目得分 10
【描述】
两个单词如果包含相同的字母,次序不同,则称为字母易位词(anagram)。例如,"silent"和"listen"是字母易位词。
定义函数:def is_anagram(s1, s2),检查两个单词是否是字母易位词,如果是,返回True;否则返回False。
【输入】
有两行,分别对应两个单词。
【输出】
若两个单词是字母易位词,输出True,否则输出False。
【输入示例】
silent
listen
【输出示例】
True
【来源】
《Python程序设计基础》第5章编程题4。(10分)
我的答案:
def is_anagram(s1, s2):
if len(s1)!=len(s2):
return False
l1=list(s1)
l2=list(s2)
l1.sort()
l2.sort()
s=0
f=True
while s<len(s1) and f:
if l1[s]==l2[s]:
s=s+1
else:
f=False
break
return f
题目得分 10
【描述】
编写程序,要求提取一个字符串中的所有数字字符(‘0’……‘9’),将其转换为一个整数输出。
【输入】
在一行中给出一个以回车结束的字符串。
【输出】
在一行中输出转换后的整数。
【输入示例】
free82jeep5
【输出示例】
825
(10分)
我的答案:
import re
s=input()
m=re.findall('\d',s)
print(int(''.join(m)))
题目得分 10
【描述】
首字母缩略词是由一个短语中每个单词的第一个字母组成,均为大写。例如,CPU是短语"central processing unit"的缩写。
定义函数:def is_acronym(s),s是短语,返回短语的首字母缩略词。
【输入】
一行中输入一个短语,短语中每个单词以空格间隔。
【输出】
该短语的首字母缩略词。
【输入示例】
central processing unit
【输出示例】
CPU
(10分)
我的答案:
def is_acronym(s):
s=s.split(' ')
cap=[]
for i in s:
s2=i[:1]
cap.append(s2)
res=''.join(cap)
res=res.upper()
return res
def main():
phrase=input()
print(is_acronym(phrase))
main()
题目得分 10
【描述】
依次计算一系列给定字符串的字母值,字母值为字符串中每个字母对应的编号值(A对应1,B对应2,以此类推,不区分大小写字母,非字母字符对应的值为0)的总和。例如,Colin的字母值为3+15+12+9+14=53
【输入】多行字符串,每个字符串占一行。
【输出】
计算并输出每行字符串的字母值。
【输入示例】
Colin
ABC
【输出示例】
53
6
(10分)
我的答案:
s = input()
while(s != ''):
num = 0
s = s.lower()
for c in s:
i = ord(c) - 96
if i < 1 or i > 26:
i = 0
num += i
print(num)
s = input()
题目得分 10
【描述】
“distance"和"disinfection"的共有前缀是"dis”。
定义函数:def prefix(s1, s2),检查两个字符串是否有共有前缀,如果有,返回该共有前缀;否则返回None。
编写一个main函数,输入两个字符串,调用prefix函数,显示共有前缀或"No common prefix"。
【输入】
有两行,分别对应两个字符串。
【输出】
若两个字符串有共有前缀,输出该共有前缀,否则输出"No common prefix"。
【输入示例】
distance
disinfection
【输出示例】
dis
(10分)
我的答案:
def prefix(s1, s2):
s=''
x=-1
f=0
for i in s1:
x+=1
if s2[x]==i:
s+=i
f=1
else:
break
if f==1:
return s
else:return 'No common prefix'
s1=input()
s2=input()
print(prefix(s1,s2))
题目得分 10