Python - AttributeError: 'str' object n'a pas d'attribut 'append'
Je reçois ce message d'erreur lorsque j'essaie d'exécuter ce code pour la ligne "codé.append("je")":
AttributeError: 'str' object n'a pas d'attribut 'append'
Je ne peux pas savoir pourquoi la liste ne pas ajouter à la chaîne. Je suis sûr que le problème est très simple, je vous Remercie pour votre aide.
def encode(code, msg):
'''Encrypts a message, msg, using the substitutions defined in the
dictionary, code'''
msg = list(msg)
encoded = []
for i in msg:
if i in code.keys():
i = code[i]
encoded.append(i)
else:
encoded.append(i)
encoded = ''.join(encoded)
return encoded
- vous n'avez pas tout
"decoded.append("i")":
dans votre morue voulez-vous dire"encoded.append("i")":
?? - Quelle est la logique derrière
encoded = ''.join(encoded)
InformationsquelleAutor Dstewart334 | 2015-01-10
Vous devez vous connecter pour publier un commentaire.
Comme vous le voyez, votre liste est converti en une chaîne de caractères dans ici
"".join(encoded)
. Etappend
est une méthode de listes, pas de chaînes. C'est pourquoi vous avez cette erreur. Aussi, comme vous le voyez si votreencoded
de la liste dispose d'un élément entier, vous verrezTypeError
parce que, vous ne pouvez pas utiliserjoin
méthode sur des entiers. Mieux vous vérifiez votre tous les codes de nouveau.Vous définissez codé à la chaîne ici:
Et bien sûr, il n'a pas d'attribut 'append'.
Puisque vous êtes en train de faire sur un cycle d'itération, sur la prochaine itération, vous avez str au lieu de la liste...
Votre chaîne de conversion en ligne est en vertu de la
else
clause. Le sortir de sous le conditionnel, et pour la boucle de sorte que c'est la dernière chose à faire pourencoded
. Comme il est, de la conversion d'une chaîne à mi-chemin par le biais de votrefor
boucle:encoded
liste a un élément entier qu'il va jeterTypeError
. Ce n'est pas une solution pour cette question.Vous obtenez l'erreur à cause de la seconde expression en vous else.
Ainsi codé est maintenant de type chaîne de caractères.
Dans la deuxième boucle, vous avez la .append(i) la méthode en if/else qui ne peut être appliqué qu'à des listes et non pas des chaînes de caractères.
Votre .méthode join() doit apparaître après la boucle de droite avant de vous le retourner.
Je apoligise si le texte ci-dessus n'apparaît pas. Ceci est mon premier post et j'en suis encore à essayer de comprendre comment cela fonctionne.