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

Signaler
Messages postés
52
Date d'inscription
dimanche 27 octobre 2013
Statut
Membre
Dernière intervention
17 juin 2014
-
Messages postés
52
Date d'inscription
dimanche 27 octobre 2013
Statut
Membre
Dernière intervention
17 juin 2014
-
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
A voir également:

2 réponses

Messages postés
74
Date d'inscription
samedi 8 décembre 2012
Statut
Membre
Dernière intervention
14 juin 2014
18
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.
Messages postés
52
Date d'inscription
dimanche 27 octobre 2013
Statut
Membre
Dernière intervention
17 juin 2014
1
oui c'est résolue merci bien
Messages postés
1
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
23 avril 2014
3
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

--