Parcourir une chaîne de caractère lettre par lettre

Résolu
nournina Messages postés 52 Date d'inscription dimanche 27 octobre 2013 Statut Membre Dernière intervention 17 juin 2014 - 23 avril 2014 à 15:34
nournina Messages postés 52 Date d'inscription dimanche 27 octobre 2013 Statut Membre 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
A voir également:

2 réponses

YepoMax Messages postés 74 Date d'inscription samedi 8 décembre 2012 Statut Membre Dernière intervention 14 juin 2014 20
24 avril 2014 à 00:33
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.
10
nournina Messages postés 52 Date d'inscription dimanche 27 octobre 2013 Statut Membre Dernière intervention 17 juin 2014 1
4 mai 2014 à 21:37
oui c'est résolue merci bien
1