Python 如何制作一个程序;翻译为;信?

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) 这将返回一个错误。我能做什么?如果像将一个字符翻译成另一个字符一样简单,您可

我正在尝试制作一个程序,用其他字母代替字母,例如“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)

这将返回一个错误。我能做什么?

如果像将一个字符翻译成另一个字符一样简单,您可以使用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()