Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1148 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  Python remplacer un caractère dans une chaine

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Python remplacer un caractère dans une chaine

n°2324200
Nestati
Citation
Posté le 15-11-2018 à 19:12:14  profilanswer
 

Bonsoir à tous , je dois faire un pendu et j'aimerais remplacer les caractères d'une chaine par ceux d'une autre à une certaine position
Avec admettons :
mot_machine='TEST'
mot_joueur='****'
lettre='E'

Code :
  1. def devoile_lettre(lettre,mot_joueur, mot_machine):
  2.     for i in range(1,len(mot_joueur)):
  3.         if(mot_machine[i]==lettre):
  4.             mot_joueur[i]=lettre
  5.     print(mot_joueur)


 
Je suis conscients qu'on ne peut pas faire d'opérations comme celle-ci sur les chaines et j'aimerais une alternative, j'ai déjà essayé avec chaine.replace()
 
Merci beaucoup :)

mood
Publicité
Posté le 15-11-2018 à 19:12:14  profilanswer
 

n°2324201
dede_sav
Posté le 15-11-2018 à 19:16:25  profilanswer
 

Bonjour,
 
Une solution possible : https://stackoverflow.com/questions [...] tain-index
 
dd

n°2324204
Nestati
Citation
Posté le 15-11-2018 à 19:39:31  profilanswer
 

Je ne trouve pas de solution dans ce que tu m'as envoyé
j'essaie des choses comme ça mot_joueur[i].replace('',lettre)...
 
Je précise qu'en cours on a vu que les choses basiques c-a-d les chaines les boucles while for et au niveau des chaines ça ne va pas plus loin que ch.upper() etc ...

n°2324205
MaybeEijOr​Not
but someone at least
Posté le 15-11-2018 à 19:40:44  profilanswer
 

Pourquoi remplacer ? ré-écris le mot, non ?


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2324207
Nestati
Citation
Posté le 15-11-2018 à 19:43:37  profilanswer
 

c'est à dire ? éclaire ma lanterne, as-tu un exemple ?

n°2324209
MaybeEijOr​Not
but someone at least
Posté le 15-11-2018 à 20:12:45  profilanswer
 

Ah ben en fait c'est ce que tu as mis comme code ce que je voulais que tu fasses. Mais tu n'as pas vraiment bon au niveau de l'algo.
 
 
pseudo-code :

Code :
  1. nombre_essais
  2. mot_a_decouvrir
  3. mot_decouvert
  4. lettre
  5. longueur_mot
  6. i
  7. j
  8. affecter nombre_essais
  9. affecter mot_a_decouvrir
  10. affecter longueur mot_a_decouvrir à longueur_mot
  11. Pour i allant de 0 à longeur_mot
  12.    affecter "*" à mot_decouvert[i]
  13. Fin Pour
  14. afficher mot_decouvert
  15. Pour j allant de 1 à nombre_essais
  16.    demander lettre
  17.    Pour i allant de 0 à longeur_mot
  18.       Si mot_decouvert[i] égale à "*" et mot_a_decouvrir[i] égale à lettre alors
  19.          affecter lettre à mot_decouvert[i]
  20.       Fin Si
  21.    Fin Pour
  22. Fin Pour


 
Sinon il suffit de googler (python string) pour trouver des fonctions sur les chaînes. [:inick:4]


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2324211
Nestati
Citation
Posté le 15-11-2018 à 20:29:13  profilanswer
 

Code :
  1. affecter lettre à mot_decouvert[i]


là est mon problème, je ne trouve pas LA fonction qui permet de faire ça, car dans tous les cas je pourrai pas faire Chaine[i]=quelque chose
 

n°2324214
MaybeEijOr​Not
but someone at least
Posté le 15-11-2018 à 21:04:16  profilanswer
 

Bah tu me fais tourner en bourrique. :pt1cable:  
J'ai repassé trop vite en revue le sujet après ta réponse, je reprends donc ce que je disais.
 
Les chaînes de caractères en Python sont immuables. Tu dois donc réécrire le mot, dans une nouvelle variable tu concatènes le début du mot, ta lettre puis la fin du mot.
Mon pseudo-code est à modifier légèrement pour utiliser de vraies strings.
Tu peux aussi utiliser une liste plutôt qu'une vraie chaîne de caractères, dans quel cas tu retrouves le pseudo-code que j'ai proposé.
 
Pour récupérer le début ou la fin du mot il faut utiliser les indexes : chaîne[début:fin].
 
nouveau_mot = chaîne[0:indice-1] + lettre + chaîne[indice+1:longueur_mot]


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2324215
Nestati
Citation
Posté le 15-11-2018 à 21:07:41  profilanswer
 

ahh oui merci bcp j'avais pas pensé à ça milles mercis

n°2324227
dede_sav
Posté le 15-11-2018 à 21:30:07  profilanswer
 

Nestati a écrit :

ahh oui merci bcp j'avais pas pensé à ça milles mercis


 
Sinon en se fondant sur le lien  => https://stackoverflow.com/questions [...] tain-index
 

Code :
  1. def replace_str_index(text, index=0, replacement=''):
  2.     return text[:index] + replacement + text[index+1:]


 
Ce qui revient en gros à faire ce que disait MaybeEijOrNot (modulo la petite erreur des index en moins).

mood
Publicité
Posté le 15-11-2018 à 21:30:07  profilanswer
 

n°2324233
MaybeEijOr​Not
but someone at least
Posté le 15-11-2018 à 22:27:36  profilanswer
 

dede_sav a écrit :

(modulo la petite erreur des index en moins).


Bien vu, ce n'est pas indice-1 mais bien indice pour le premier terme.
Sinon je n'avais pas regardé le lien, donc en effet le lien donnait la bonne réponse (et sans petite faute). Oui je suis allé trop vite à chacun de mes passages sur ce sujet.

 

Sinon, ce qu'il faut retenir, c'est que pour des problèmes où le contexte importe peu, Google donne très efficacement des réponses. Et du côté de la programmation, en détaillant bien le contexte dans la recherche, on peut généralement y arriver relativement rapidement à trouver la solution.
Aujourd'hui c'est inconcevable de vouloir faire de la programmation sans avoir les bases de l'informatique, et la recherche Google fait parti des bases de l'informatique.


Message édité par MaybeEijOrNot le 15-11-2018 à 22:28:16

---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2324234
Nestati
Citation
Posté le 15-11-2018 à 22:34:01  profilanswer
 

Pour te répondre Maybe , j'ai vraiment recherché sur peut être 15 sites différents la réponse , rien ne me convenait.
Et pour les bases j'ai fait deux ans de langage C durant mes études.


Message édité par Nestati le 15-11-2018 à 22:34:27
n°2324235
MaybeEijOr​Not
but someone at least
Posté le 15-11-2018 à 22:43:22  profilanswer
 

Ce que je veux dire, c'est que la programmation c'est déjà un stade avancé de l'informatique on va dire. Donc normalement tu passes au stade avancé quand tu as les bases.
C'est comme si quelqu'un venait demander de l'aide pour le calcul d'une intégrale sans savoir faire une division euclidienne. C'est un peu déroutant...
Mais tu n'es pas le seul, c'est simplement que ça m'interloque à chaque fois.
 
Tu as fait quoi comme recherche ? Parce que si je tape "Python String" ou "Python string modify" je pense que je trouve la réponse dans les 5 premiers liens à chaque fois...
 
Après moi je m'en fous, c'est juste que si tu veux faire de la programmation tu es obligé d'apprendre à utiliser google et une doc autrement tu ne peux pas avancer.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2332982
D3bug
Geeky Dad
Posté le 04-05-2019 à 19:32:11  profilanswer
 

Comme l'a dit Maybe, la bonne pratique en général pour faire du replace sur un type immuable c'est de construire son équivalent sous forme de list() et de jouer sur la list.


---------------
MSI Z390 Godlike * Core i9 9900K * G.SKILL Trident 32Go 3200Mhz * MSI RTX 2080Ti Duke OC * G502/K70 Lux MKII * BeQuiet Dark Pro v2 * Zowie XL2540 240Hz * BENQ BL3201 PT

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  Python remplacer un caractère dans une chaine

 

Sujets relatifs
Petit jeu en pythonTester si la chaine de caractère mène a un dossier ou un fichier
Python en finance - contrôle de gestionsupprimer des mots dans une chaine c++ builder
Code jeux du nombre aléatoire en python 3.6[Python Tkinter]- Bataille Naval
Programmation récursive ou itérativeprogrammation python
Plus de sujets relatifs à : Python remplacer un caractère dans une chaine


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR