Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 python : Sélectionner tout - Visualiser dans une fenêtre à part
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 python : Sélectionner tout - Visualiser dans une fenêtre à part
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 python : Sélectionner tout - Visualiser dans une fenêtre à part
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 python : Sélectionner tout - Visualiser dans une fenêtre à part
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...
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Salut,
Juste pour le fun... le pendant de .join est .split:
- W
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 >>> 'X'.join('abbacaad'.split('a')) 'XbbXcXXd' >>> 'X'.join('abbacaad'.split('aa')) 'abbacXd' >>> 'XX'.join('abbacaad'.split('a')) 'XXbbXXcXXXXd' >>>
Partager