Python - correction exercices Chaînes de caractères
Caractère au choix
Proposition de script
chaine = "You're talkin' to me ?"
print('Voila la chaîne en mémoire : ', chaine)
index = 8
print("Le caractère à l'index", index ,' est :', chaine[index])
Remarques
Ne pas oublier que pour inclure des apostrophes ( ' ) dans une chaîne, il faut l'encadrer par des guillemets ( " ), et vice et versa !
Longueur d'une chaîne
Proposition de script
La structure for ... in ... parcourt une chaîne du début à la fin; il y a donc autant de "tour de boucles" qu'il y a de caractères dans la chaîne : compter les caractères revient donc
à compter ces "tours de boucles", c'est à dire ici à faire une incrémentation d'un compteur à chaque tour :
chaine = input('Entrer une chaîne : ')
nb_car = 0 # variable compteur de caractères
for car in chaine :
nb_car += 1 # à chaque caractère, on incrémente le compteur de 1
print('Longueur de la chaîne calculée :', nb_car)
print('Longueur de la chaîne avec la fonction len() :', len(chaine))
Remarques
- Attention à l'indentation : L'instruction d'incrémentation doit être exécutée pour chaque caractère, donc à chaque 'tour' de la boucle de parcours de la chaîne.
Ce n'est pas le cas des deux instructions
print(), qui doivent afficher le résultat du comptage une fois seulement que celui-ci est terminé; elles ne sont donc pas indentées comme la précédente. - Comme pour toute fonction, on applique la fonction
len()à ce qui est placé entre ses parenthèses ( ici, la variablechaine). - l'incrémentation aurait bien sûr pu être aussi écrite :
nb_car = nb_car +1
Miroir
Proposition de script
chaine = "Bonjour"
miroir = '' # chaîne vide qui contiendra la chaîne en miroir
for car in chaine :
miroir = car + miroir # ajout de chaque caractère AU DÉBUT de la chaîne
print(miroir)
Remarques
- Attention à la manière d'initialiser une chaîne vide ( on peut bien sûr aussi utiliser les guillemets doubles
"".) - on rappelle que la variable placée après l'instruction
for( ici,car) contient chaque caractère successif de la chaîne parcourue. - l'idée était donc ici de concaténer chaque caractère successif de la chaîne AU DÉBUT de la nouvelle chaîne miroir, qui "grossit" donc progressivement vers sa "gauche".
Autres possibilités
Comme très souvent en informatique, il existe plusieurs façons de résoudre un même problème; voici une autre version qui utilise une variable supplémentaire pour adresser le caractère à concaténer par son indice dans la chaîne :
chaine = "Bonjour"
miroir = '' # chaîne vide qui contiendra la chaîne en miroir
indice = 0 # indice du premier caractère de la chaîne
for car in chaine :
miroir = chaine[indice] + miroir # le caractère est repéré par son indice
indice += 1 # on passe au caractère suivant
print(miroir)
Ou encore :
chaine = "Bonjour"
miroir = '' # chaîne vide qui contiendra la chaîne en miroir
indice = len(chaine)-1 # indice du DERNIER caractère de la chaîne
for car in chaine :
miroir = miroir + chaine[indice] # dans ce cas, il faut concaténer A LA FIN de la nouvelle chaîne...
indice -= 1 # on passe au caractère PRÉCÉDENT
print(miroir)
Oui, cela devient compliqué, mais pourquoi pas ??