Chaînes de caractères | Exercices 1-5

Enoncé exercice 1

Ecrire un programme Python qui lit une chaîne de caractères, puis l’affiche en séparant ces caractères par des espaces sauf pour l’espace lui-même.

Correction exercice 1

Le programme va commencer par la lecture de la chaîne de caractères entrée par l’utilisateur vers chaine (ligne 1). Cette lecture a été faite à l’aide de la fonction input sans avoir à n’effectuer aucune conversion, car cette fonction renvoie l’entrée sous forme d’une chaîne de caractères.

Pour afficher les caractères de la chaîne de caractères, on doit déjà pouvoir leur accéder. La boucle for peut nous aider à faire ceci très facilement. Il suffira d’écrire for c in chaine, pour que la boucle nous donne accès à chaque caractère de chaine à travers la variable c (ligne 2).

Au sein du bloc de la boucle for, on va afficher le caractère c, suivi d’un espace, à l’aide de la fonction print (ligne 5). On doit exclure de cette opération le caractère espace qu’il faudra tout simplement ignorer. Ceci peut être fait avec l’instruction continue, une fois que la variable c contiendra un espace (lignes 3-4). L’instruction continue permet d’arrêter l’exécution du bloc de la boucle for et de passer directement au traitement de l’élément suivant de la chaîne de caractère. Ceci va empêcher d’arriver à l’instruction print et comme ça, les espaces contenus dans la chaîne ne pourront jamais être affichés.

Solution exercice 1
chaine=input("Entrez une chaîne de caractères: ")
for c in chaine:
    if c==' ':
        continue
    print(c,end=(" "))
Enoncé exercice 2

Ecrire un programme Python qui lit séparément le nom et le prénom d’une personne. Puis lit son sexe, à travers un menu qui demande d’entrer 1 pour une personne de sexe masculin, et 2 pour une personne de sexe féminin.

Composer par ces données une chaîne de caractères contenant le nom complet constitué de : Titre Prénom Nom. Où le titre est soit M. ou Mme. Afficher ensuite un message de remerciement.

Correction exercice 2

Dans cet exercice on va apprendre à faire la concaténation des chaînes de caractères. La concaténation des chaînes, est tout simplement la formation d’une nouvelle chaîne de caractères par l’assemblage ou la juxtaposition des chaînes de départ.

Avant de pouvoir effectuer la concaténation, on doit déjà commencer par la lecture du nom, du prénom et du titre de la personne. Pour le nom et le prénom, leur lecture est directe. On va juste faire appel à la fonction input à deux reprises, et mettre le nom et le prénom lus, respectivement dans les deux chaînes de caractères nom et prenom (lignes 1-2).

Pour connaitre le titre de la personne, on va lui proposer d’entrer 1 pour un homme et 2 pour une femme (ligne 3).

Pour effectuer la concaténation des chaînes de caractères, on se sert de l’opérateur +. Selon la civilité de la personne, on va concaténer l’une des deux chaînes “M. “ ou “Mme. “ avec la chaîne prenom, suivie d’une chaîne constituée d’un seul espace pour séparer le prénom du nom, et puis finalement avec la chaîne nom (lignes 4-7). Le résultat de cette concaténation sera affecté à la chaîne complet.

On termine le programme en remerciant la personne par l’affichage du mot Merci suivi du nom complet (ligne 8).

Solution exercice 2
nom=input("Entrez votre nom de famille: ")
prenom=input("Entrez votre prénom: ")
titre=int(input("Entrez 1 ou 2. (1: Homme 2: Femme): "))
if titre==1:
    complet="M. "+prenom+" "+nom
else:
    complet="Mme. "+prenom+" "+nom
print("Merci ",complet)
Enoncé exercice 3

Ecrire un programme Python qui lit une chaîne de caractères puis calcule et affiche sa taille en utilisant les deux méthodes suivante :

  • la fonction len;
  • la boucle for.
Correction exercice 3

La taille d’une chaîne de caractères peut être obtenue directement en passant la chaîne en question, ici chaine, comme paramètre à la fonction len, en écrivant len(chaine) (ligne 3). Cette fonction va renvoyer un entier, qui représente le nombre de caractères dans la chaîne. Il suffira donc de l’intercepter et de le stocker dans la variable taille. Ensuite on affiche cette variable à l’aide de la fonction print (ligne 4).

La deuxième méthode consiste à parcourir les éléments de la chaîne de caractères, à l’aide d’une boucle for. Et pour chaque élément, incrémenter par 1 la valeur de la variable taille, initialisée à 0 avant l’entrée dans la boucle (lignes 6-8). De cette façon, la variable taille aura comme valeur, à la sortie de la boucle for, le nombre de caractères de la chaîne. Il suffira donc de l’afficher pour conclure le but du programme (ligne 9).

Il faudra remarquer que l’utilisation de la variable taille dans les deux méthodes, n’affectera en aucun cas les résultats du programme.

Solution exercice 3
chaine=input("Entrez une chaîne de caractères: ")
print("Méthode 1:")
taille=len(chaine)
print("La taille de la chaîne est: ",taille)
print("Méthode 2:")
taille=0
for c in chaine:
    taille=taille+1
print("La taille de la chaîne est: ",taille)
Enoncé exercice 4

Ecrire un programme Python qui lit une chaîne de caractères et un caractère, et retrouve la position de la première occurrence de ce caractère dans la chaîne, par les deux méthodes suivantes :

  • la boucle for ;
  • la méthode

Si le caractère ne se trouve pas dans la chaîne, on affiche : Ce caractère ne figure pas sur la chaîne.

Correction exercice 4

Le programme va commencer par la lecture de la chaîne de caractères vers chaine, puis le caractère vers car (lignes 1-2). Concernant la première méthode, on va utiliser une boucle for pour parcourir tous les éléments de la chaîne de caractères (lignes 6-11). Et chaque élément c, sera comparé avec le caractère entré car. Si le caractère recherché a été rencontré, on va faire trois choses (lignes 7-10).

La première sera d’afficher que le caractère a été retrouvé, et afficher sa position pos (ligne 8). Cette variable est une variable entière initialisée à 0 (ligne 4), puis incrémentée après le traitement de chaque nouvel élément de la chaîne (ligne 11). De cette façon, elle permettra de donner la position de chaque caractère atteint par la boucle. Etant initialisée à 0, la variable pos donnera des positions qui commencent à 0.

La deuxième chose à faire, sera de signaler que le caractère car a été retrouvé sur la chaîne, en affectant à la variable booléenne existe la valeur True (ligne 9). Cette variable avait comme valeur initiale False (ligne 5). Donc, si après la sortie de la boucle for elle garde toujours comme valeur False, c’est que le caractère n’a pas été rencontré sur la chaine. Dans ce cas, on va afficher que le caractère ne figure pas sur la chaîne, en exploitant pour ceci la structure de contrôle if juste après la sortie de la boucle (lignes 12-13).

La troisième et dernière chose à faire, sera d’arrêter la recherche une fois le caractère est trouvé, en utilisant pour ceci l’instruction break (ligne 10). Faute de quoi, toute les positions des occurrences du caractère car seront affichées ce qui n’est pas l’objectif du programme.

La deuxième méthode consistera à utiliser la méthode index. Cette méthode index permet de renvoyer la position, dans une chaîne, d’un caractère pris en paramètre. Elle est utilisée de la façon suivante : chaine.index(car) (ligne 13). Seulement que la méthode index va générer une erreur si elle ne trouve pas le caractère recherché. Les deux blocs try except vont servir à gérer cette éventuelle erreur. Le bloc try contient l’élément qui peut générer l’erreur, qui est ici la méthode index. Et le bloc except contient les instructions à exécuter lorsqu’une erreur survienne lors de l’exécution du bloc try.

Pour ce programme, on va mettre la fonction print, qui affiche le résultat renvoyé par la méthode index, dans le bloc try (lignes 15-16). Et on mettra une autre fonction print, qui affiche que le caractère entré ne figure pas sur la chaîne, dans le bloc except (lignes 17-18).

Solution exercice 4
chaine=input("Entrez une chaîne de caractères: ")
car=input("Entrez un caractère: ")
print("Méthode 1:")
pos=0
existe=False
for c in chaine:
    if c==car:
        print("Ce caractère se trouve dans la position: ",pos)
        existe=True
        break
    pos=pos+1
if existe==False:
    print("Ce caractère ne figure pas sur la chaîne.")
print("Méthode 2:")
try:
    print("Ce caractère se trouve dans la position: ",chaine.index(car))
except:
    print("Ce caractère ne figure pas sur la chaîne.")
Enoncé exercice 5

Ecrire un programme Python qui lit une chaîne de caractères et indique si elle est palindrome ou non.

On rappelle qu’une chaîne de caractères est palindrome lorsqu’elle se lit dans les deux sens de la même manière. Exemple : kayak, non,…

Correction exercice 5

Il existe différentes façons pour vérifier si une chaîne de caractères est palindrome ou non. La plus classique sera celle présentée ici.

Pour qu’une chaîne de caractères soit palindrome, il faudra que le premier caractère soit le même que le dernier, le deuxième identique au avant dernier et ainsi de suite jusqu’à arriver au milieu de la chaîne. Comme montré sur les deux exemples suivants :

On va donc utiliser pour cette vérification, deux variables i et j pour nous donner les indices des deux caractères à comparer. i commencera au début de la chaîne, c’est-à-dire à l’indice 0 et s’incrémentera par 1 après chaque comparaison (lignes 3 et 10). j commencera, quant à lui, depuis le dernier caractères de la chaîne, qui a comme indice taille-1, où taille est le nombre de caractères de la chaîne, et il se décrémentera par 1, après chaque opération de comparaison (lignes 4 et 11).

Pour assurer les opérations d’incrémentation et de décrémentation des deux variables i et j, et les multiples opérations de comparaison, ainsi que l’arrêt des vérification à l’arrivée au milieu de la chaîne, on utilisera une boucle while ayant comme condition i<j (ligne 6).

Cette condition est adoptée, car on souhaite comparer un caractère à gauche avec un autre à droite de la chaîne.

Pour chaque itération de la boucle while, on va comparer les deux caractères de la chaine chaine qui ont comme indices i et j. Pour leur accéder, on utilise chaine[i] et chaine[j]. Si pour une itération donnée, on trouve que les deux caractères comparés ne sont pas identiques, la chaîne de caractères ne peut pas alors être palindrome. On le signale donc on affectant la valeur False à la variable booléenne palindrome (ligne 8), initialisée par True avant d’entrer dans la boucle while (ligne 5). Et on quitte aussi la boucle, en utilisant l’instruction break (ligne 9).

Après la sortie de la boucle, on fait un test sur la valeur de la variable palindrome. Et selon le cas, on affiche le message adéquat (lignes 12-15).

Solution exercice 5
chaine=input("Entrez une chaîne de caractères: ")
taille=len(chaine)
i=0
j=taille-1
palindrome=True
while i<j:
    if chaine[i]!=chaine[j]:
        palindrome=False
        break
    i=i+1
    j=j-1
if palindrome==True:
    print("La chaîne de caractères entrée est palindrome.")
else:
    print("La chaîne de caractères entrée n'est pas palindrome.")