You are on page 1of 5

THIRUMAL Kartigan

SNPI3

Exercice Python

Le programme donné :

def tester_palindrome ( chaine ) :

if len ( chaine) < 2 :

return True

elif chaine [ 0 ] != chaine [-1] :

return False

else :

chaine = chaine [1 : -1]

return tester_palindrome ( chaine )

1. Quand on saisit l’instruction tester_palindrome ('kayak") , la fonction est appelée deux


fois. L’appel initial est suivi de l’appel récursif qui se produit lorsque la fonction appelle elle-
même avec la sous-chaîne « aya » alors l' appel initiale 1 fois . On peut conclure que la
fonction tester_palindrome est appelée 3 fois lors de l’exécution.

Mon programme :

1
Le résultat :

2.a. La fonction tester_palindrome est récursive car elle s’appelle elle-même avec une sous-
chaîne de la chaîne originale jusqu’à ce qu’une condition normale soit atteinte. La fonction
tester_palindrome est récursive car elle comme un sous-emsemble de la chaîne .

2.b. L’appel à la fonction tester_palindrome se terminera quelle que soit la chaîne de


caractères sur laquelle elle s’applique car elle utilise la récursion avec une condition de base,
cela signifie qu’elle finira par atteindre la condition de base tôt ou tard et renvoyer une
valeur booléenne.

L’appel à la fonction tester_palindrome se terminera car à chaque appel, la longueur de la


chaîne de caractères est réduite d’au moins un caractère, jusqu’à ce qu’il ne reste plus qu’un
ou zéro caractère. À ce stade, la fonction retourne True car une chaîne vide ou une chaîne
avec un seul caractère est toujours un palindrome ( on peut consater sa avec le même
programme ).

Le résultat :

2
3.a. L’appel de la fonction avec tester_palindrome(53235) génère une erreur de type
TypeError car cette entrée n’est pas une chaîne de caractères et ne peut pas être découpée
en sous-chaînes pour effectuer la récursion.

3.b. Pour afficher clairement cette erreur à l’utilisateur, on peut ajouter l’instruction
suivante entre la ligne 1 et la ligne 2 de la fonction tester_palindrome :

Cela affiche une exception de type TypeError avec un message d’erreur

4. Voici le code d’une fonction itérative qui détermine si une chaîne de caractères est un
palindrome :

3
Le résultat :

4
5

You might also like