所以我试图创建一个简单的程序,将一个短语解码为另一个短语。
这是我现在的代码
def mRNA_decode(phrase):
newphrase = phrase.replace('A','U'),phrase.replace('T','A'),phrase.replace('C','G'),phrase.replace('G','C')
return newphrase
所以基本上,如果我给出字符串'TATCGTTAATTCGAT'
,所需的输出将为'AUAGCAAUUAAGCUA'
相反,我得到('TUTCGTTUUTTCGUT', 'AAACGAAAAAACGAA', 'TATGGTTAATTGGAT', 'TATCCTTAATTCCAT')
,这是我输入的短语,但它不是将更改全部添加到一个短语中,而是打印四种不同的翻译,所有只有一个字符在每次翻译中都有变化。
我如何更改代码以便翻译新短语,使其在具有所需输出的连续字符串上而不是具有四个不同的短语?
感谢您的帮助
答案 0 :(得分:3)
您可以将str.translate()
与翻译表:
s = 'TATCGTTAATTCGAT'
s.translate(str.maketrans("ATCG", "UAGC"))
# 'AUAGCAAUUAAGCUA'
答案 1 :(得分:2)
所以作为一个fyi,记住顺序很重要。例如,如果您需要在字符串c
中交换字符a
和cat
,则无法将c
替换为a
,然后a
与c
。否则你会得到以下步骤:
cat
- > aat
- > cct
答案 2 :(得分:1)
简单地
def mRNA_decode(phrase):
newphrase = phrase.replace('A','U').replace('T','A').replace('C','G').replace('G','C')
return newphrase
由于str是不可变的,replace
一直返回新的字符串,你只需要在新创建的字符串上调用next replace
方法。
在您的问题中,您对同一个字符串进行了四次独立操作,因此每次调用会产生四个新字符串。你用逗号分隔它们,它被Python解释为元组声明。
UPD:正如评论中所述,您可以拨打replace
而不是phrase.translate()
次呼叫。你可以在其他答案中找到一个例子。
答案 3 :(得分:-1)
这是因为您每次都使用phrase
变量替换,phrase
的值不会更改,因此您有4种不同的输出
建议,改为使用翻译功能:
from string import maketrans
intab = "ATCG"
outtab = "UAGC"
trantab = maketrans(intab, outtab)
phrase.translate(trantab)