这是我目前所拥有的,出于某种原因,它没有用 G 替换 C。为什么会这样?
DNASeq=raw_input("Enter the DNA sequence here: ")
DNASeq=DNASeq.upper().replace(" ","")
reverse=DNASeq[::-1]
print reverse.replace('A','U').replace('T','A').replace('C','G').replace('G','C')
请您参考如下方法:
问题是您将 C 替换为 G,然后将 G 替换为 C。一种防止从一个转到另一个的简单方法是将 C 替换为 g,这样它就不会返回到 C,然后大写结果:
gattaca="GATTACA"
rev = gattaca[::-1]
print rev.replace('A','u').replace('T','a').replace('C','g').replace('G','c').upper()
这会正确输出 UGUAAUC 而不是像您的示例那样输出 UCUAAUC。
更新
但是,更 Pythonic 的方式,避免基于大小写的 hack,并且因为字符串不需要扫描五次而更有效,并且目的更明显,将是:
from string import maketrans
transtab = maketrans("ATCG", "UAGC")
print rev.translate(transtab)
