Application des fonctions

 

Application 1 : comptage du nombre de mots

Écrire une fonction nombre_de_mots(chaine) qui attend en paramètre une chaîne de caractères et qui affiche en retour le nombre de mot contenu dans la phrase, c'est-à-dire le nombre de sous-chaînes séparées par un caractère "espace". Exemples de résultats attendus :

>>> nombre_de_mots("Le soleil")
Cette chaîne contient 2 mots
>>> nombre_de_mots("Python permet de manipuler facilement les chaînes de caractères")
Cette chaîne contient 9 mots

 

Application 2 : initiales des mots

Écrire une fonction initiales(chaine) qui attend en paramètre une chaîne de caractères et qui affiche en retour les initiales des mots dans une liste, c'est-à-dire la première lettre de chacun des mots. Exemples de résultats attendus :

>>> initiales("Le soleil")
Voici la liste des initiales de cette chaîne : ['L', 's']
>>> initiales("Python permet de manipuler facilement les chaînes de caractères")
Voici la liste des initiales de cette chaîne : ['P', 'p', 'd', 'm', 'f', 'l', 'c', 'd', 'c']

 

Application 3 : recherche de palindromes

Un palindrome est un texte dont la succession des lettres ou des chiffres est la même quand on le parcours de gauche à droite ou de droite à gauche.

Un palindrome peut être un mot, comme « radar » ou « ressasser », ou un nombre comme « 45254 ».

Voici quelques exemples de mots palindromes de la langue Française :

  • radar
  • kayak
  • ressasser
  • ici
  • rever
  • non
  • gag
  • rotor
  • serres
  • non
  • tôt
  • été
  • elle

1 - écrire une fonction inverse_chaine(chaine) qui attend en paramètre une chaîne de caractères et qui renvoit en retour la chaîne inversée, c'est-à-dire avec les caractères dans l'ordre inverse. Exemples de résultats attendus :

>>> inverse_chaine("bonjour")
ruojnob
>>> inverse_chaine("Python")
nohtyP
>>> inverse_chaine("radar")
radar

2 - écrire une fonction inverse_nombre(nombre) qui attend en paramètre un nombre entier et qui renvoit en retour le nombre obtenu en inversant l'ordre des chiffres du nombre reçu. Exemples de résultats attendus :

>>> inverse_nombre(1234)
4321
>>> inverse_nombre(88)
88
>>> inverse_nombre(30257694)
49675203
>>> inverse_nombre(739937)
739937

3 - écrire une fonction palindrome_chaine(chaine) qui attend en paramètre une chaîne de caractères et qui affiche un message indiquant si cette chaîne est un palindrome ou pas. Exemples de résultats attendus :

>>> palindrome_chaine("bonjour")
bonjour n'est pas un palindrome
>>> palindrome_chaine("Python")
Python n'est pas un palindrome
>>> palindrome_chaine("un palindrome")
un palindrome n'est pas un palindrome
>>> palindrome_chaine("ABCDEF")
ABCDEF n'est pas un palindrome
>>> palindrome_chaine("ABCBA")
ABCBA est un palindrome
>>> palindrome_chaine("zzzz")
zzzz est un palindrome
>>> palindrome_chaine("radar")
radar est un palindrome
>>> palindrome_chaine("ressasser")
ressasser est un palindrome

4 - écrire une fonction palindrome_nombre(nombre) qui attend en paramètre un nombre entier et qui affiche un message indiquant si ce nombre est un palindrome ou pas. Exemples de résultats attendus :

>>> palindrome_nombre(22)
22 est un palindrome
>>> palindrome_nombre(313)
313 est un palindrome
>>> palindrome_nombre(8448)
8448 est un palindrome
>>> palindrome_nombre(7)
7 est un palindrome
>>> palindrome_nombre(12344321)
12344321 est un palindrome
>>> palindrome_nombre(1234321)
1234321 est un palindrome
>>> palindrome_nombre(23)
23 n'est pas un palindrome
>>> palindrome_nombre(100)
100 n'est pas un palindrome
>>> palindrome_nombre(8779)
8779 n'est pas un palindrome
>>> palindrome_nombre(123456789)
123456789 n'est pas un palindrome

Question : quel est le premier nombre palindrome après 2019 ?

Les phrases palindromes :

On appelle phrase palindrome une phrase qui, si on lui enlève les espaces, s'écrit de la même manière qu'on la parcourt de gauche à droite ou de droite à gauche.

Voici quelques exemples de phrases palindromes :

  • Karine alla en Irak
  • C'est sec
  • La malade pédala mal
  • À l'étape, épate-la !
  • Non à ce canon
  • Ainsi Anaïs nia
  • Oh, cela te perd répéta l'écho
  • Un port trop nu
  • Noël a trop par rapport à Léon
  • La mariée ira mal
  • Engage le jeu que je le gagne
  • Léon a rasé César à Noël
  • La mère puce récupère mal
  • Elu par cette crapule
  • Esope reste ici et se repose
  • Léon n’osa rêver à son Noël
  • Eh, ça va la vache ?
  • À révéler mon nom, mon nom relèvera
  • Éli, tu es avec ce vase utile
  • Et la marine va venir à Malte
  • Ce reptile relit Perec
  • Un art luxueux ultra nu
  • À Laval, elle l'avala
  • Léon a sucé ses écus à Noël
  • Émile-Éric, notre valet, alla te laver ton ciré élimé
  • Et si l'arôme des bottes révèle ma déviante et naïve dame, le verset t'obsède, moraliste !

Pour détecter si une phrase est un palindrome il faut :

- enlever tous les espaces présents dans la phrase
- vérifier si la chaîne obtenue est un palindrome (en utilisant la fonction palindrome_chaine(chaine) écrite précédemment)

3 - écrire une fonction palindrome_phrase(chaine) qui attend en paramètre une phrase (mots séparés par des espaces) et qui affiche un message indiquant si cette phrase est un palindrome ou pas. Exemples de résultats attendus :

>>> palindrome_phrase("Voici une phrase")
Cette phrase n'est pas un palindrome
>>> palindrome_phrase("karine alla en irak")
Cette phrase est un palindrome
>>> palindrome_phrase("non a ce canon")
Cette phrase est un palindrome
>>> palindrome_phrase("leon a rase cesar a noel")
Cette phrase est un palindrome
>>> palindrome_phrase("eh ca va la vache")
Cette phrase est un palindrome

Remarque : les phrases passées en paramètre à la fonction palindrome_phrase(chaine) doivent être composées exclusivement de lettres minuscules non accentuées et d'espaces et sans aucun caractères de ponctuation.

Exemple : pour tester la phrase "À l'étape, épate-la !" on appellera la fonction palindrome_phrase("a l etape epate la")

 

 

Application 4 : l'algorithme 196

Commençons par présenter l'algorithme 196 :

On prend un nombre entier naturel. À ce nombre on ajoute le nombre écrit à l'envers. On recommence la procédure avec la somme ainsi obtenue jusqu'à ce que le résultat soit un nombre palindrome.

Ainsi, partant par exemple du nombre 79, on arrive au palindrome 44044 au bout de 6 itérations :

79 + 97 = 176

176 + 671 = 847

847 + 748 = 1595

1595 + 5951 = 7546

7546 + 6457 = 14 003

14 003 + 30 041 = 44 044

Comme 44 044 est un nombre palindrome on arrête les itérations.

Travail demandé :

1 - Écrire un programme en Python affichant les opérations de l'algorithme 196 (comme illustré ci-dessus) quelque soit le nombre de départ. Vous veillerez à structurer votre programme en différentes fonctions ayant chacune un rôle bien précis (inversion d'une chaîne de caractères ou d'un nombre, affichage de l'addition, détection d'un palindrome, calcul du nombre d'itérations pour un nombre de départ donné, etc.).

2 - Quel est le plus petit entier menant à un nombre palindrome au bout d'exactement 10 itérations ?

3 - Si le nombre de départ est 196, au bout de combien d'itérations obtient-on un palindrome ?

4 - En partant au départ d'un nombre entier compris entre 1 et 1 000 000 (un million) pour quel nombre de départ obtient-t-on un nombre palindrome avec le plus grand nombre d'itérations ? Combien d'itérations ? Ce nombre de départ est-il le seule entre 1 et 1 000 000 à poséder ce nombre d'itérations ?

5 - Toujours en utilisant les 1 000 000 premiers entiers naturels, combien conduisent à un palindrome avec l'algorithme 196 (nombre et pourcentage) et combien n'aboutissent jamais à un palindrome (nombre et pourcentage) ?

6 - A partir de combien d'itérations peut-on concluse que le nombre de départ n'aboutira pas à un palindrome ? Optimisez alors votre programme pour accélérer le résultat de la question précédente.

 

Correction de l'application 4 : algorithme 196

 


 

 

Site Internet : python.gecif.net

Auteur : Jean-Christophe MICHEL

Professeur de Sciences Industrielles de l'Ingénieur
option Informatique et Numérique

Courriel : jc.michel@gecif.net