J'ai écrit un programme simple pour traduire l'ADN en ARN. Fondamentalement, vous entrez une chaîne, elle sépare la chaîne en caractères et les envoie à une liste, décale la lettre et renvoie une chaîne de la liste qui en résulte. Ce programme traduit correctement a à, et à a, mais ne change pas g en c et c en g.Comportement étrange en Python
Voici le programme:
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)
Maintenant, juste modifier le programme en n'itérer sur les éléments, mais sur des positions, il fonctionne comme prévu. C'est le code qui en résulte:
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)
Pourquoi ce comportement étrange se produit-il, et comment puis-je le résoudre?
Veuillez corriger l'indentation. –
Vous n'expliquez jamais le problème avec votre premier jeu de code. –
Je l'ai édité pour expliquer le problème désolé sur ce –