Python 如何制作一个程序;翻译为;信?
我正在尝试制作一个程序,用其他字母代替字母,例如“Q”变成“R”,或“D”变成“U”。我被困在这里:Python 如何制作一个程序;翻译为;信?,python,bioinformatics,biopython,Python,Bioinformatics,Biopython,我正在尝试制作一个程序,用其他字母代替字母,例如“Q”变成“R”,或“D”变成“U”。我被困在这里: def dna(): seq = input('Enter the sequence:') list1 = list(seq) for i in seq: if i == 'A': seq[i] = 'T' return ''.join(list1) 这将返回一个错误。我能做什么?如果像将一个字符翻译成另一个字符一样简单,您可
def dna():
seq = input('Enter the sequence:')
list1 = list(seq)
for i in seq:
if i == 'A':
seq[i] = 'T'
return ''.join(list1)
这将返回一个错误。我能做什么?如果像将一个字符翻译成另一个字符一样简单,您可以使用replace。这是你想要的吗
def dna():
seq = input('Enter the sequence: ')
return seq.replace('A', 'T')
print(dna())
您可以使用:
输出:
Enter the sequence: QQQDDD
RRRUUU
这里有一种使用理解和查找词典的方法,它应该更容易扩展以包含更多字符:
mapping = {'Q': 'R', 'D': 'U'}
seq = input('Enter the sequence:')
new = ''.join(mapping.get(c, c) for c in seq)
示例输入“QUAD”变为“RUAU”。您有许多问题的答案,但没有一个能解决您的问题,因此查看您的代码,希望这能有所帮助:
seq
是一个字符串,因此在python中是不可变的,因此:
seq[i] = 'T'
不是有效的python。您已经创建了一个列表1
,您的意思是:
list1[i] = 'T'
注意,这仍然不起作用,因为i
不是索引,而是seq
中的一个字符,但您可以使用enumerate()
同时获取索引和字符,例如:
for i, c in enumerate(seq):
if c == 'A':
list1[i] = 'T'
...
在python中,str.translate()非常适合翻译多个字符,例如,对于您的简单示例:
def dna():
t = str.maketrans('A', 'T')
seq = input('Enter the sequence: ')
return seq.translate(t)
这很容易扩展,例如A->T
和g->C
,反之亦然:
t = str.maketrans('AGTC', 'TCAG')
我只想做一个简单的代码,将a(Adenin)转换为
T(胸腺嘧啶),G(鸟苷)转化为C(细胞质),反之亦然
基于这一澄清,你实际上想做的是补充你的DNA序列。提供以下功能:
>>> from Bio.Seq import Seq
>>> seq = Seq('ATCGGAT')
>>> seq.complement()
Seq('TAGCCTA', Alphabet())
如果需要,您可以构建自己的实现,biopython one以字母识别的方式使用str.translate
(检查您的DNA/RNA等是否混合),请参阅
简单来说,你可以试着编一本字典,试着把a(腺嘌呤)转化为T(胸腺素),G(鸟苷)转化为C(细胞质),反之亦然。看看内置的功能。你想要的生物信息转化是什么?这是转录,反向补充,或翻译序列,还是其他什么?不管是什么,biopython可以为你做这件事,没有更多的细节,你不会得到一个明确的答案ansewr@Chris_Rands我只想做一个简单的代码,将a(腺嘌呤)转化为T(胸腺素),G(鸟苷)转化为C(细胞质),反之亦然。我在生物学和python方面都是新手,这并没有什么特别的目的。@coldspeed,在我看来,这不是一个合适的重复,这个问题有一个特定的生物信息学解决方案
>>> from Bio.Seq import Seq
>>> seq = Seq('ATCGGAT')
>>> seq.complement()
Seq('TAGCCTA', Alphabet())
def dna():
d={'Adenin':'Thymin','Thymin':'Adenin','Guanin':'Cytosin','Cytosin':'Guanin'}
seq = raw_input('Enter the sequence:')
return d[seq]
print dna()