Я написал простую программу для перевода ДНК на РНК. В принципе, вы вводите строку, она отделяет строку от символов и отправляет их в список, сдвигает букву и возвращает строку из результирующего списка. Эта программа правильно переводит a в u и to в a, но не меняет g на c и c на g.Странное поведение в Python
Это программа:
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)
Почему возникает это странное поведение и как его разрешить?
Исправьте углубление. –
Вы никогда не объясняете проблему с помощью своего первого набора кода. –
Я отредактировал его, чтобы объяснить проблему. Извините за это. –