Python 带for环的上层dna转录
这是我必须达到标题中所述目标的准则。我现在似乎遇到的问题是第二行代码。我添加它的那一刻,程序停止工作,没有给我一个错误。提前谢谢你的帮助Python 带for环的上层dna转录,python,python-3.x,for-loop,dna-sequence,Python,Python 3.x,For Loop,Dna Sequence,这是我必须达到标题中所述目标的准则。我现在似乎遇到的问题是第二行代码。我添加它的那一刻,程序停止工作,没有给我一个错误。提前谢谢你的帮助 seqDNA = input() seqDNA = seqDNA.upper() comp = '' for c in seqDNA: if c == 'a': comp = comp + 'u' elif c == 't': comp = comp + 'a' elif c == 'g':
seqDNA = input()
seqDNA = seqDNA.upper()
comp = ''
for c in seqDNA:
if c == 'a':
comp = comp + 'u'
elif c == 't':
comp = comp + 'a'
elif c == 'g':
comp = comp + 'c'
elif c == 'c':
comp = comp + 'g'
print(comp)
这是正确的行为,因为您将检查大写字符和小写字符 在
seqDNA=seqDNA.upper()之后,字符串包含大写字符。例如:
seqDNA = 'UGCGGCGAATATTT'
如果我们现在在seqDNA中用c的进行迭代,c
将包含一个大写字符(即'c'
)。现在,如果你比较c=='c'
,你比较'c'=='c'
,它们是不相等的
因此,您应该将测试修改为:
seqDNA = input()
seqDNA = seqDNA.upper()
comp = ''
for c in seqDNA:
if c == 'A':
comp = comp + 'u'
elif c == 'T':
comp = comp + 'a'
elif c == 'G':
comp = comp + 'c'
elif c == 'C':
comp = comp + 'g'
print(comp)
如果seqDNA
包含字符,而不是'a'
、'T'
、'G'
和'C'
,则这将引发键错误。这在我看来是合理的行为。如果您只是想忽略这些字符,您可以在[c]
上使用.get(..,)
:
seqDNA = input()
seqDNA = seqDNA.upper()
trans = {
'A': 'u',
'T': 'a',
'G': 'c',
'C': 'g'
}
comp = ''.join(trans.get(c,'') for c in seqDNA)
print(comp)
seqDNA=input()
seqDNA=seqDNA.upper()
trans={
‘A’:‘u’,
‘T’:‘a’,
‘G’:‘c’,
‘C’:‘g’
}
comp=''.join(对于seqDNA中的c,trans.get(c''))
打印(comp)
第二行是什么意思seqDNA=seqDNA.upper()
?我理解并感谢您对代码的优化,尽管我对字典还不太熟悉。我应该做的是,我不知道我不记得了,最后只是简单地向上:comp=comp.upper()
seqDNA = input()
seqDNA = seqDNA.upper()
trans = {
'A': 'u',
'T': 'a',
'G': 'c',
'C': 'g'
}
comp = ''.join(trans.get(c,'') for c in seqDNA)
print(comp)