Python Exercises with Solutions
Niveau Facile
1. Salutation simple
Ecrivez une fonction `saluer(nom)` qui prend un parametre `nom` (une chaîne de caracteres) et
affiche "Bonjour, [nom] !".
def saluer(nom):
print(f"Bonjour, {nom} !")
saluer("Alice")
2. Carre d'un nombre
Ecrivez une fonction `carre(nombre)` qui prend un nombre en parametre et renvoie son carre.
def carre(nombre):
return nombre ** 2
print(carre(4))
3. Verification de parite
Ecrivez une fonction `est_pair(nombre)` qui prend un nombre entier en parametre et renvoie `True`
si le nombre est pair, sinon `False`.
def est_pair(nombre):
return nombre % 2 == 0
print(est_pair(5))
Niveau Intermediaire
4. Calcul de la factorielle
Ecrivez une fonction `factorielle(n)` qui prend un entier positif `n` et renvoie sa factorielle.
def factorielle(n):
if n == 0:
return 1
else:
return n * factorielle(n - 1)
print(factorielle(5))
5. Nombre de voyelles dans une chaîne
Ecrivez une fonction `compter_voyelles(chaine)` qui prend une chaîne de caracteres et renvoie le
nombre de voyelles dans cette chaîne.
def compter_voyelles(chaine):
voyelles = "aeiouAEIOU"
return sum(1 for c in chaine if c in voyelles)
print(compter_voyelles("Bonjour tout le monde"))
6. Inversion de chaîne
Ecrivez une fonction `inverser_chaine(chaine)` qui prend une chaîne et renvoie cette chaîne
inversee.
def inverser_chaine(chaine):
return chaine[::-1]
print(inverser_chaine("Python"))
Niveau Difficile
7. Nombre premier
Ecrivez une fonction `est_premier(n)` qui prend un entier `n` et renvoie `True` s'il est un nombre
premier, sinon `False`.
def est_premier(n):
if n < 2:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
print(est_premier(13))
8. Somme de liste recursive
Ecrivez une fonction recursive `somme_recursive(liste)` qui prend une liste de nombres et renvoie
leur somme en utilisant la recursivite.
def somme_recursive(liste):
if not liste:
return 0
return liste[0] + somme_recursive(liste[1:])
print(somme_recursive([1, 2, 3, 4]))
9. Anagrammes
Ecrivez une fonction `sont_anagrammes(mot1, mot2)` qui prend deux chaînes de caracteres et
renvoie `True` si ce sont des anagrammes, sinon `False`.
def sont_anagrammes(mot1, mot2):
return sorted(mot1) == sorted(mot2)
print(sont_anagrammes("chien", "niche"))
Niveau Tres Difficile
10. Tri rapide (Quicksort)
Implementez une fonction `tri_rapide(liste)` qui prend une liste de nombres et utilise l'algorithme de
tri rapide pour renvoyer la liste triee.
def tri_rapide(liste):
if len(liste) <= 1:
return liste
pivot = liste[0]
moins = [x for x in liste[1:] if x <= pivot]
plus = [x for x in liste[1:] if x > pivot]
return tri_rapide(moins) + [pivot] + tri_rapide(plus)
print(tri_rapide([3, 6, 8, 10, 1, 2, 1]))
11. Resolution du probleme des tours de Hanoï
Ecrivez une fonction `hanoi(n, source, auxiliaire, cible)` qui imprime les etapes pour resoudre le
probleme des tours de Hanoï pour `n` disques.
def hanoi(n, source, auxiliaire, cible):
if n == 1:
print(f"Deplacer disque 1 de {source} vers {cible}")
return
hanoi(n-1, source, cible, auxiliaire)
print(f"Deplacer disque {n} de {source} vers {cible}")
hanoi(n-1, auxiliaire, source, cible)
hanoi(3, 'A', 'B', 'C')