Python

Chaînes de caractères
Exercices pour débuter

Écrire un script qui demande à l'utilisateur de saisir un texte puis qui compte et affiche le nombre d'occurences du caractère «e» dans le texte saisi.

Dans l'exemple d'affichage ci-dessous, l'utilisateur a entré le texte : «Ceci est un exemple».

Entrez un texte : Ceci est un exemple
Il y a 5 "e" dans ce texte.
  • Une piste ?
  • Un schéma ?
  • Une analyse ?
  • Solution
  • Variante

Il y a deux façon de parcourir chaque caractère d'une chaîne :

  • Ou bien on parcourt chaque caractère à l'aide de l'opérateur d'inclusion in.
  • Ou bien on parcourt la liste des index possibles, de 0 à len(chaîne)-1 à l'aide de la fonction range().
  • On demande à l'utilisateur d'entrer un texte ;
  • On parcourt chaque caractère du texte ;
  • Lorsque le caractère est un «e», on compte 1 de plus ;
  • A la fin du parcours, on affiche le résultat.
  • On demande à l'utilisateur d'entrer un texte ; Texte à stocker dans une variable.
  • On parcourt chaque caractère du texte ; Avec une boucle for.
  • Lorsque le caractère est un «e», on compte 1 de plus ; Cela nécessite un test d'égalité. De plus, il faut déclarer en début de programme une variable dans laquelle stocker le nombre de «e» trouvés !!!
  • A la fin du parcours, on affiche le résultat.
texte = input('Entrez un texte : ')
n = 0                       # Variable de "stockage" du nombre de "e"
for caractere in texte:
    if caractere == 'e':
        n += 1
print('Il y a {} "e" dans ce texte.'.format(n))

Le même programme, en parcourant les indices plutôt que les caractères du texte :

texte = input('Entrez un texte : ')
n = 0                       # Variable de "stockage" du nombre de "e"
for i in range(len(texte)):
    if texte[i] == 'e':
        n += 1
print('Il y a {} "e" dans ce texte.'.format(n))

On veut écrire un programme dans lequel l'utilisateur entre un texte, puis ce programme affiche ce texte en insérant un espace entre chaque caractère.

Dans l'exemple d'affichage ci-dessous, l'utilisateur a entré le texte : «Ceci est un exemple».

Entrez un texte : Ceci est un exemple
Réponse : C e c i   e s t   u n   e x e m p l e

Amélioration : Faites en sorte de n'avoir qu'un seul espace au lieu de trois (cas d'un caractère étant un espace)

  • Une piste ?
  • Un schéma ?
  • Une analyse ?
  • Solution
  • Amélioration
Comme on ne peut pas modifier le contenu d'une chaîne de caractère, le plus simple est de partir d'une chaîne vide : texte = '' que l'on remplit «au fur et à mesure» et qui sera la réponse fournie par le programme.
  • On demande à l'utilisateur d'entrer un texte ;
  • On définit une chaîne vide ;
  • On parcourt chaque caractère du texte ;
  • Chaque caractère est stocké dans la cahîne puis suivi d'un espace ;
  • A la fin du parcours, on affiche la chaîne (qui n'est plus vide !).
Le schéma est suffisamment explicite.
texte = input('Entrez un texte : ')
chaine = ''                             # Chaine vide qui servira de "stockage" de la réponse
for caractere in texte:
    chaine = chaine + caractere +' '    # On ajoute chaque caractère de texte suivi d'un espace.
print('Réponse : {}'.format(chaine))

Le programme précédent crée 3 espaces là où il y en avait un seul. On peut gérer ces espaces avec un «Si... Alors...».

texte = input('Entrez un texte : ')
chaine = ''                             # Chaine vide qui servira de "stockage" de la réponse
for caractere in texte:
    chaine += caractere                 # On ajoute chaque caractère de texte
    if caractere != ' ':
        chaine += ' '                   # On ajoute un espace si le caractère n'en était pas un
print('Réponse : {}'.format(chaine))

Écrire un script qui demande un texte à l'utilisateur, puis qui renvoie une copie inversée de ce texte.

Dans l'exemple d'affichage ci-dessous, l'utilisateur a entré le texte : «Ceci est un exemple».

Entrez un texte : Ceci est un exemple
Réponse : elpmexe nu tse iceC

Amélioration : Il faudra ensuite que le programme indique si le texte saisi est un palindrome (un texte qui peut se lire dans les deux sens, comme «radar» ou «s.o.s»).

  • Une piste ?
  • Un schéma ?
  • Une analyse ?
  • Solution
  • On triche ?
C'est le même principe que l'exercice n°2, il faut par contre reconstruire la chaîne «à l'envers».
Pas de schéma, mais l'analyse peut aider.

En Python:

  • la concaténation 'Cou'+'Rage' donne 'CouRage' ;
  • mais la concaténation 'Rage'+'Cou' donne 'RageCou'.
texte = input('Entrez un texte : ')
chaine = ''                             # Chaine vide qui servira de "stockage" de la réponse
for caractere in texte:
    chaine = caractere + chaine         # On ajoute chaque caractère DEVANT la chaine
print('Réponse : {}'.format(chaine))
if chaine == texte:
    print('Ce texte est un palindrome')
else:
    print('Ce texte n\'est pas un palindrome')

Grâce aux tranches, on peut parcourir les chaînes de caractères à l'envers :D.

texte = input('Entrez un texte : ')
chaine = texte[::-1]                    # Parcours à l'envers de la chaîne
print('Réponse : {}'.format(chaine))

# Une autre méthode pour la recherche des palindromes :
dernier = len(texte)-1                  # Index du dernier terme
indice = 0                              # Index en cours d'analyse
while (texte[indice] == texte[dernier-indice]) and (indice < dernier):
    indice += 1

if indice == dernier:
    print('Ce texte est un palindrome')
else:
    print('Ce texte n\'est pas un palindrome')