Code:
1
2
3
4
5 def remplace(chaine="bonjour le monde"): for i in chaine: if chaine[i]="o": chaine[i]="e" print (st)
il y a une erreur sur la ligne 3
merci
Version imprimable
Code:
1
2
3
4
5 def remplace(chaine="bonjour le monde"): for i in chaine: if chaine[i]="o": chaine[i]="e" print (st)
il y a une erreur sur la ligne 3
merci
Bonjour,
= affectatioin
== égalité
Maintenant python est un langage très chouette en ce qui concerne la remontée des erreurs, il faudrait apprendre à les analyser, car là c'est une erreur toute bête, lorsque tu auras des erreurs plus complexes tu ne pourras jamais t'en sortir sans comprendre ce que python te remonte comme problèmes.
jai corrigé une erreur mais cela ne marche tjrs pasCode:
1
2
3
4
5 def remplace(chaine="bonjour le monde"): for i in chaine: if chaine[i]=="o": chaine[i]="e" print (chaine)
la chaine ne s'affiche pas a la fin
Salut,
De toutes façons, chaine[i] = 'o' doit planter avec un message d'erreur explicite car on ne peut pas modifier les chaînes de caractères. Pour le reste, tout dépend de ce que vous voulez faire i.e. il ne suffit pas toujours de montrer une fonction pour imaginer ce que vous allez en faire.
- W
Nul besoin de définir votre propre fonction. Python la possède déjà !
https://www.tutorialspoint.com/pytho...ng_replace.htm
je souhaite remplacer les "o" d'une chaine par des "e"
pourquoi cela ne marche pasCode:
1
2
3
4
5 chaine="bonjour le monde" for i in chaine: if i=="o": i="e" print (chaine,end='')
merci
ca non plus ca ne marche pas
Code:
1
2
3
4
5 chaine="bonjour le monde" chaine.replace("o", "e") print (chaine,end='')
Bonjour
Parce que la variable "i" n'est qu'une copie de chaque caractère de la chaine. Donc modifier la copie n'affecte en rien la chaine d'origine.
Il faut alors écrire une nouvelle chaine puis, une fois la nouvelle écrite, la réaffecter à l'ancienne.
Algorithme de base
Code:
1
2
3
4
5
6
7 chaine="bonjour le monde" copie="" for i in chaine: if i=="o": i="e" copie+=i chaine=copie print (chaine,end='')
Ensuite, Python propose certains outils qui aideront à optimiser un peu. Exemple via une liste en intension retransformée ensuite en string via join():
Code:
1
2
3
4 chaine="bonjour le monde" copie="".join(x if x != "o" else "e" for x in chaine) chaine=copie print (chaine,end='')
A partir de là, la variable "copie" devient un peu inutile...
Code:
1
2
3 chaine="bonjour le monde" chaine="".join(x if x != "o" else "e" for x in chaine) print (chaine,end='')
Et si on regarde l'objet "string", on se rend compte qu'il possède une méthode "replace" déjà montrée par lg_53. Donc on peut l'utiliser et réaffecter le résultat à la chaine d'origine
Code:
1
2
3 chaine="bonjour le monde" chaine=chaine.replace("o", "e") print (chaine,end='')
Mouais. C'est vrai que liste.sort() modifie la liste d'origine mais string.replace() ne modife pas la string. Mais tout de même, un minimum de réflexion t'aurait évité de venir poser cette dernière bête question. Surtout que dans le lien montré par lg_53, il est écrit "The method replace() returns a copy of the string". C'est quand-même malheureux de venir sur un forum poser des questions et ne pas avoir la politesse d'aller lire les réponses...
merci