TP - Parcours et traitement☘
Dans le dossier [NSI]
, créez le dossier [F02-Chaines]
.
Téléchargez le fichier « à trous » TPF02.11.py
(clic droit -> [Enregistrer sous]) et enregistrez-le dans ce dossier.
Important
Dans chaque fonction à programmer, remplacez le mot-clef pass
par les
instructions nécessaires.
De plus, ne vous précipitez pas sur les pistes !
Prenez le temps de réflechir et chercher par vous-même en suivant les conseils
ci-après
Conseils
- Pour exécuter ce programme, il suffit de le sauvegarder puis d'appuyer sur la touche
[F5]
. - Avez-vous bien fait un schéma au brouillon pour visualiser le problème posé ?
- Avez-vous essayé de rédiger un algorithme en français, avec vos propres mots, avant de vous lancer dans la programmation sur machine ?
- Avez-vous utilisé des affichages intermédiaires, des
print()
, pour visualiser au fur et à mesure le contenu des variables ? - Avez-vous testé le programme avec les propositions de tests fournies ?
- Avez-vous testé le programme avec de nouveaux tests, différents de ceux proposés ?
Nombre de « e
»☘
Complétez le corps de la fonction nombre_e()
pour qu'elle renvoie le nombre
d'occurrences de la lettre « e
» dans la chaîne saisie en paramètre.
1 2 3 4 5 |
|
Exemple de test
>>> nombre_e("Ceci est un exemple.")
5
>>> nombre_e("Essai")
0
Une piste
La fonction nombre_e()
se conçoit en trois temps :
- On parcourt chaque caractère de la chaîne.
- Lorsque le caractère est un
'e'
, on compte 1 de plus. - A la fin du parcours, on renvoie le décompte obtenu.
Premier « e
»☘
Complétez le corps de la fonction rang_premier_e()
en respectant ses spécifications.
1 2 3 4 5 6 7 |
|
Exemple de test
>>> rang_premier_e("Ceci est un exemple.")
1
>>> rang_premier_e("Essai")
-1
Une piste
On parcourt tous les indices tant que :
- cet indice est inférieur à la longueur de la chaîne ;
- le caractère correspondant à cet indice n'est pas
'e'
.
On vérifie ensuite la valeur de l'indice (a-t-on dépassé l'indice du dernier caractère ou pas ?).
Espacer☘
-
Complétez le corps de la fonction
espacer()
en respectant ses spécifications.1 2 3 4 5
def espacer(chaine): """ chaine – str (chaîne de caractères) Sortie: str – la chaine dans laquelle un espace a été inséré entre chaque caractère. """
Exemple de test
>>> espacer("Ceci est un exemple.") 'C e c i e s t u n e x e m p l e . '
Une piste
Puisqu'on ne peut pas modifier une chaîne de caractères, il faut « tricher ». Pour cela :
- On initialise une chaîne vide. Par exemple :
resultat = ''
. - On parcourt les caractères de la chaîne à modifier et on place les caractères à conserver dans la chaîne
resultat
. - On renvoie la chaîne
resultat
qui correspond à la chaîne initiale modifiée.
- On initialise une chaîne vide. Par exemple :
-
Une amélioration
Le programme précédent crée trois espaces là où il y en avait un seul et place un espace à la fin de la chaîne. Complétez le corps de la fonctionespacer_mieux()
en respectant ses spécifications.1 2 3 4 5 6
def espacer_mieux(chaine): """ chaine – str (chaîne de caractères) Sortie: str – la chaine dans laquelle un espace a été inséré entre chaque caractère, sauf pour les espaces et le dernier caractère. """
Exemple de test
>>> espacer_mieux("Ceci est un exemple.") 'C e c i e s t u n e x e m p l e .'
Une piste
Prendre en compte le dernier caractère en dehors de la boucle plutôt que dans la boucle...
Inverser☘
-
Complétez le corps de la fonction
inverser()
en respectant ses spécifications.1 2 3 4 5 6
def inverser(chaine): """ chaine – str (chaîne de caractères) Sortie: str – écriture "inversée" de cette chaîne : le premier caractère devint le dernier, le deuxième devient l'avant dernier, etc... """
Exemple de test
>>> inverser("Ceci est un exemple.") '.elpmexe nu tse iceC'
Une piste
Comment placer un caractère au début de la chaîne « construite » plutôt qu'à la fin ?
-
En faisant appel à cette fonction, complétez la définition de la fonction
est_palindrome()
qui renvoieTrue
si la chaîne en paramètre est un palindrome (un texte qui peut se lire dans les deux sens, comme « radar » ou « s.o.s ») et qui renvoieFalse
sinon.
Attention, il vous est aussi demandé de compléter le docstring (les spécifications) de cette fonction.1 2 3 4 5
def est_palyndrome(chaine): """ chaine – Sortie: """
Exemple de test
>>> est_palyndrome("Ceci est un exemple.") False >>> est_palyndrome("radar") True
Une piste
On arrête avec les pistes : reprenez les conseils des parties précédentes, un papier et un crayon, vous devriez y arriver !
Tables de multiplication☘
Rappel
De manière générale, soit une fonction renvoie une valeur, soit une fonction effectue un affichage. Elle ne doit jamais faire les deux.
Complétez le corps de la fonction table()
en respectant ses
spécifications. Vous pouvez constatez que cette fonction ne renvoie
aucune valeur (None
), son rôle se borne à afficher la table de
multiplication de n
, de n*1
à n*fin
(inclus).
1 2 3 4 5 |
|
Exemple de test
>>> table(2, 4)
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8