一个改变DNA核苷酸字母的程序
我正在制作一个程序来改变 DNA 的序列。找到字母“a”时,将其替换为“t”,并与之相反。但是我在程序运行时遇到了一个问题,它将“a”替换为“t”,然后再次将“t”替换为“a”。
我该如何解决?
编码:
def opposite_nucleotide(dna):
dna = dna.replace("a", "t")
dna = dna.replace("t", "a")
dna = dna.replace("g", "c")
dna = dna.replace("c", "g")
return dna
dna3 = input("Enter the DNA to represent it's oppsite one: ")
dna4 = opposite_nucleotide(dna3)
print(dna4)
回答
事实证明,这个功能是内置在 Python 中的。
str.translate(表)
返回字符串的副本,其中每个字符已通过给定的转换表映射。...
您可以使用 str.maketrans() 从不同格式的字符到字符映射创建转换映射。
用法示例:
def opposite_nucleotide(dna):
return dna.translate(str.maketrans("atgc", "tacg"))
str.maketrans可以通过多种方式调用,但我上面使用的形式与您tr//在 Perl 中的使用方式类似:第一个参数中的每个字符都将被第二个参数中的相应字符替换。
显然,如果您是出于课程作业或教育目的而这样做,请不要只使用内置工具。
- Nice find! Didn't know about the translate-related possibilities in Python.