我正在编写一个代码来翻译DNA,我正在寻求帮助。
示例输入看起来像:A C G T G C
我正在寻找输出:[“T”,“G”,“C”,“A”,“C”,“G”]
我也希望while循环的循环次数与输入中的字符数一样多。(用变量替换9)
我非常感谢所有的帮助!
n = 0
i = 0
list_1 = []
text = raw_input("TYPE WITH SPACES BETWEEN LETTERS:")
hi = len(text)
while i < 9 :
split_string = text.split(" ")
if split_string[n] == "A" :
list_1.append("T")
elif split_string[n] == "T" :
list_1.append("A")
elif split_string[n] == "C" :
list_1.append("G")
elif split_string[n] == "G" :
list_1.append("C")
i = i +1
n = n + 1
print list_1
答案 0 :(得分:1)
如何一次性使用split()
来分解输入:
>>> dnaSeq = raw_input("Enter a space-separated DNA string:").split()
Enter a space-separated DNA string:A C G T G C
>>> dnaSeq
['A', 'C', 'G', 'T', 'G', 'C']
然后使用字典将碱基映射到它们的碱基对以获得互补链:
>>> dnaPair = dict(A="T", T="A", C="G", G="C")
>>> complement = [dnaPair[base] for base in dnaSeq]
>>> complement
['T', 'G', 'C', 'A', 'C', 'G']
答案 1 :(得分:0)
这应该这样做。
translate_dict={'A':'T',
'T':'A',
'C':'G',
'G':'C'}
text=raw_input("TYPE WITH SPACES BETWEEN LETTERS:")
print [translate_dict[item] for item in text.upper().split(' ')]
结果:
TYPE WITH SPACES BETWEEN LETTERS:A T G G C C G T C
['T', 'A', 'C', 'C', 'G', 'G', 'C', 'A', 'G']
答案 2 :(得分:0)
python 3中的单行
text.translate(str.maketrans('ATCG','TAGC')).split(' ')
甚至
raw_input('Type with spaces between letters:'
).translate(str.maketrans('ATCG','TAGC')).split(' ')
或在Python 2中
from string import maketrans
text.translate(maketrans('ATCG','TAGC')).split(' ')
答案 3 :(得分:0)
倾听每个人的意见,我想我已经解决了。 我没有足够的声誉来投票,但我会! (我也为Uracil及其“转录”编码,而非“翻译”。谢谢!
conv={"A":"T","T":"A","C":"G","G":"C","U":"A"}
outputDNA=""
inputDNA= raw_input("Type the DNA sequence you want transcribed: ")
for letter in inputDNA:
outputDNA += conv[letter]
print outputDNA