Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 带for环的上层dna转录_Python_Python 3.x_For Loop_Dna Sequence - Fatal编程技术网

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)