Parcourir une chaîne de caractère lettre par lettre [Résolu]

Messages postés
52
Date d'inscription
dimanche 27 octobre 2013
Dernière intervention
17 juin 2014
- - Dernière réponse : nournina
Messages postés
52
Date d'inscription
dimanche 27 octobre 2013
Dernière intervention
17 juin 2014
- 4 mai 2014 à 21:37
bonjour ,
je veut faire une boucle qui fait parcourir une chaine de caractère lettre par lettre et fait des changement de lettre et à chaque fois afficha le nouveau mot
voila la boucle que je fait mais ça marche plus avec moi ::


chaine = raw_input ('entrer une chaine ')
for i in chaine :
if chaine [i] == 'a':
chaine [i] == b
print chaine
if chaine [i] == 'b':
chaine [i] == c
print chaine
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
75
Date d'inscription
samedi 8 décembre 2012
Dernière intervention
14 juin 2014
2
Merci
Bonjour,

Comme Isichia l'a dit, on ne peut pas changer la énième lettre d'une chaine de caractères.

Il est possible de faire cette opération en réassignant une nouvelle chaine de caractère à la variable comme montré dans le code ci-dessous. Néanmoins, si il s'agit juste de remplacer des lettres par d'autres, la méthode str.replace(old, new) le fera aisément ( voir : https://docs.python.org/3.4/library/stdtypes.html#str.replace )

# En parcourant la chaine caractère par caractère :

chaine = raw_input('entrer une chaine ') 

for i in range(len(chaine)):
    # Note : dans votre code vous faisiez 'for i in chaine:'. i est alors de type str et non int donc chaine[i] va générer une erreur.
    # https://docs.python.org/3.4/library/functions.html#func-range
    if chaine[i] == 'a':
        chaine = chaine[:i] + 'b' + chaine[i+1:]
        print chaine
    elif chaine[i] == 'b':
        chaine = chaine[:i] + 'c' + chaine[i+1:]
        print chaine

# Pareil mais en utilisant enumerate ( voir https://docs.python.org/3.4/library/functions.html#enumerate )

chaine = raw_input('entrer une chaine ') 

for i, char in chaine:
    if char == 'a':
        chaine = chaine[:i] + 'b' + chaine[i+1:]
        print chaine
    elif char == 'b':
        chaine = chaine[:i] + 'c' + chaine[i+1:]
        print chaine

# En utilisant la méthode str.replace. A noter qu'ici, la chaine ne sera pas imprimée à chaque changement de lettre.

chaine = raw_input('entrer une chaine ').replace("b", "c").replace("a", "b")

print chaine


En espérant avoir aidé !
YepoMax.

Dire « Merci » 2

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 105 internautes ce mois-ci

nournina
Messages postés
52
Date d'inscription
dimanche 27 octobre 2013
Dernière intervention
17 juin 2014
-
oui c'est résolue merci bien
Commenter la réponse de YepoMax
Messages postés
1
Date d'inscription
jeudi 22 septembre 2005
Dernière intervention
23 avril 2014
-2
Merci
bonjour,

juste en passant sur le forum; une réponse:
une chaîne est un objet immutable;

revoir les caractéristiques des types de données en Python.

bon courage

Pancrace

--
Commenter la réponse de Isichia

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.