Exercices Python avec des corrigés à exécuter
Une fois que vous connaissez les boucles, les listes et les dictionnaires, il vous faut des problèmes pour vous entraîner. Ces six-là reviennent sans cesse dans les cours et les entretiens. Chaque solution est l'une des nombreuses façons valables de faire, et chacune a été exécutée pour obtenir le résultat affiché.
FizzBuzz
Affichez les nombres de 1 à 15. Pour les multiples de 3, affichez Fizz ; pour les multiples de 5, affichez Buzz ; pour les multiples des deux, affichez FizzBuzz. Astuce : testez d'abord le cas combiné, car 15 est aussi un multiple de 3 et de 5.
for n in range(1, 16):
if n % 15 == 0:
print("FizzBuzz")
elif n % 3 == 0:
print("Fizz")
elif n % 5 == 0:
print("Buzz")
else:
print(n)Sortie :
1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz
Vérification de palindrome
Un palindrome se lit de la même façon dans les deux sens. Mettez le texte en minuscules et retirez les espaces pour que les majuscules et l'espacement n'interviennent pas, puis comparez-le à son inverse.
def is_palindrome(text):
cleaned = text.lower().replace(" ", "")
return cleaned == cleaned[::-1]
print(is_palindrome("Never odd or even"))
print(is_palindrome("Python"))Sortie :
True False
Compter les voyelles
Parcourez les caractères et comptez ceux qui se trouvent dans la chaîne des voyelles. sum() appliqué à un générateur de 1 est une façon compacte de compter.
def count_vowels(text):
return sum(1 for ch in text.lower() if ch in "aeiou")
print(count_vowels("Pip and the Scrap Isle"))Sortie :
6
Le mot le plus fréquent
Utilisez un dictionnaire comme compteur. counts.get(word, 0) renvoie 0 pour un mot que vous n'avez pas encore vu, si bien que vous pouvez ajouter 1 sans vérifier. max avec key=counts.get choisit le mot dont le compte est le plus élevé.
text = "the robot and the island and the sea"
counts = {}
for word in text.split():
counts[word] = counts.get(word, 0) + 1
best = max(counts, key=counts.get)
print(best, counts[best])Sortie :
the 3
Supprimer les doublons en gardant l'ordre
Convertir en ensemble (set) supprime les doublons mais fait perdre l'ordre. Pour garder la première occurrence de chaque élément, gardez une liste de ce que vous avez déjà vu.
items = ["a", "b", "a", "c", "b"]
seen = []
for item in items:
if item not in seen:
seen.append(item)
print(seen)Sortie :
['a', 'b', 'c']
Deux nombres dont la somme vaut une cible
Étant donné une liste et une cible, renvoyez les positions de deux nombres dont la somme vaut la cible. Un dictionnaire des nombres déjà vus répond à la question en un seul passage : pour chaque nombre, vérifiez si le nombre qui vous manque a déjà été vu.
def two_sum(numbers, target):
seen = {}
for i, n in enumerate(numbers):
if target - n in seen:
return seen[target - n], i
seen[n] = i
print(two_sum([2, 7, 11, 15], 9))Sortie :
(0, 1)
Questions fréquentes
- Où trouver d'autres exercices Python ?
- Commencez par les idées ci-dessus et modifiez-les : comptez les consonnes au lieu des voyelles, trouvez le mot le moins fréquent, ou renvoyez toutes les paires pour two-sum. Modifier un problème déjà résolu est le meilleur problème suivant.
- Faut-il regarder la solution si je bloque ?
- Essayez pendant au moins dix minutes d'abord. Ensuite, lisez la solution, refermez-la, et réécrivez-la de mémoire le lendemain. Copier sans réécrire ne développe pas la compétence.
- Ces exercices conviennent-ils pour préparer un entretien ?
- Oui : FizzBuzz, les palindromes, le comptage et two-sum sont des échauffements classiques en entretien. Consultez le guide des entretiens sur ce site pour les questions de concepts (listes contre tuples, is contre ==).