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

nournina 52 Messages postés dimanche 27 octobre 2013Date d'inscription 17 juin 2014 Dernière intervention - 23 avril 2014 à 15:34 - Dernière réponse : nournina 52 Messages postés dimanche 27 octobre 2013Date d'inscription 17 juin 2014 Dernière intervention
- 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

3 réponses

YepoMax 75 Messages postés samedi 8 décembre 2012Date d'inscription 14 juin 2014 Dernière intervention - 24 avril 2014 à 00:33
-1
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.
nournina 52 Messages postés dimanche 27 octobre 2013Date d'inscription 17 juin 2014 Dernière intervention - 4 mai 2014 à 21:37
oui c'est résolue merci bien
Commenter la réponse de YepoMax
Isichia 1 Messages postés jeudi 22 septembre 2005Date d'inscription 23 avril 2014 Dernière intervention - Modifié par Isichia le 23/04/2014 à 16:00
-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.