我写了一个简单的程序来将 DNA 翻译成 RNA。基本上,您输入一个字符串,它将字符串分成字符并将它们发送到一个列表,移动字母并从结果列表中返回一个字符串。该程序正确地将 a 转换为 u,并将 to 转换为 a,但不会将 g 转换为 c,将 c 转换为 g。
这是程序:
def trad(x):
h=[]
for letter in x:
h.append(letter)
for letter in h:
if letter=="a":
h[h.index(letter)]="u"
continue
if letter=="t":
h[h.index(letter)]="a"
continue
if letter=="g":
h[h.index(letter)]="c"
continue
if letter=="c":
h[h.index(letter)]="g"
continue
ret=""
for letter in h:
ret+=letter
return ret
while True:
stry=raw_input("String?")
print trad(stry)
现在,只需通过不迭代元素而是在位置上迭代来改变程序,它就可以按预期工作。这是生成的代码:
def trad(x):
h=[]
for letter in x:
h.append(letter)
for letter in xrange (0, len(h)):
if h[letter]=="a":
h[letter]="u"
continue
if h[letter]=="t":
h[letter]="a"
continue
if h[letter]=="g":
h[letter]="c"
continue
if h[letter]=="c":
h[letter]="g"
continue
ret=""
for letter in h:
ret+=letter
return ret
while True:
stry=raw_input("String?")
print trad(stry)
为什么会出现这种奇怪的行为,我该如何解决?