Retour au blog

Python Boucles et Conditions : Exercices Universitaires

Plonge dans le cœur de la programmation Python avec cette série d'exercices dédiés aux boucles et conditions ! Idéal pour les étudiants universitaires en informatique, tu vas solidifier tes bases et affûter tes compétences algorithmiques.

Cet article a été rédigé à des fins pédagogiques. Les informations présentées peuvent évoluer. Nous t’invitons à vérifier auprès de sources officielles.

Salut, futurs développeurs Python !

Les boucles et les conditions sont les piliers de la programmation. Sans elles, impossible de créer des programmes dynamiques et intelligents. Que tu sois en licence, master ou que tu souhaites simplement renforcer tes bases en Python pour l'université, cette série d'exercices est conçue pour t'offrir un entraînement progressif et rigoureux. Prêt à coder ?

Compétences travaillées :

  • Utilisation des boucles for et while pour l'itération.
  • Application des structures conditionnelles if, elif et else.
  • Développement de fonctions Python.
  • Résolution de problèmes algorithmiques simples à complexes.
  • Gestion des cas limites et des erreurs.

Erreurs fréquentes à éviter :

  • Indentation : En Python, l'indentation définit les blocs de code. Une mauvaise indentation entraîne des erreurs !
  • Boucles infinies : Oublier de modifier la condition d'arrêt d'une boucle while peut la rendre infinie.
  • Comparaison vs. Affectation : Utiliser = (affectation) au lieu de == (comparaison) dans une condition.
  • Hors limites (IndexError) : Accéder à un index inexistant dans une liste ou une chaîne.
  • Logique incorrecte : Des conditions mal formulées peuvent mener à des résultats inattendus. Teste toujours tes codes avec différents scénarios.

La série d'exercices : Python - Boucles et Conditions

Exercice 1 : Afficher des nombres pairs (Facile)

Écris un programme Python qui utilise une boucle for pour afficher tous les nombres pairs de 1 à 10 inclus. (3 points)

Correction :

On utilise range(1, 11) pour générer les nombres de 1 à 10. Ensuite, une condition if vérifie si le nombre est pair (modulo 2 est égal à 0).

for i in range(1, 11):
 if i % 2 == 0:
 print(i)

Résultat attendu :
2
4
6
8
10

Astuce : La fonction range(start, stop) génère des nombres de start jusqu'à stop-1. Si tu veux inclure stop, utilise stop+1.

Exercice 2 : Vérifier un nombre positif (Facile)

Écris un programme qui demande à l'utilisateur de saisir un nombre entier. Affiche "Le nombre est positif" si le nombre est supérieur à 0, et "Le nombre n'est pas positif" sinon. (3 points)

Correction :

On utilise input() pour obtenir la saisie de l'utilisateur et int() pour la convertir en entier. Une structure if/else gère la condition.

nombre = int(input("Saisis un nombre entier : "))
if nombre > 0:
 print("Le nombre est positif")
else:
 print("Le nombre n'est pas positif")

Exemple de résultat :
Saisis un nombre entier : 5
Le nombre est positif

Point méthode : N'oublie pas de convertir l'entrée de input() qui est toujours une chaîne de caractères en un type numérique si tu veux faire des opérations mathématiques ou des comparaisons.

Exercice 3 : Compteur avec boucle while (Facile)

Écris un programme Python qui utilise une boucle while pour afficher les nombres de 5 à 1 en ordre décroissant, puis affiche "Décollage !". (4 points)

Correction :

Une variable de compteur est initialisée à 5. La boucle while continue tant que le compteur est supérieur à 0, et est décrémentée à chaque itération.

compteur = 5
while compteur > 0:
 print(compteur)
 compteur -= 1
print("Décollage !")

Résultat attendu :
5
4
3
2
1
Décollage !

Astuce : Assure-toi toujours que la condition de ta boucle while finira par être fausse pour éviter une boucle infinie. Ici, compteur -= 1 garantit cette fin.

Exercice 4 : Somme des nombres pairs dans une liste (Moyen)

Écris une fonction Python nommée somme_pairs qui prend une liste de nombres entiers en argument et retourne la somme de tous les nombres pairs de cette liste. (5 points)

# Exemple d'appel :
# ma_liste = [1, 2, 3, 4, 5, 6]
# print(somme_pairs(ma_liste)) # Doit afficher 12 (2+4+6)

Correction :

La fonction initialise une somme à 0, puis itère sur chaque élément de la liste avec une boucle for. Une condition if vérifie si l'élément est pair avant de l'ajouter à la somme.

def somme_pairs(liste_nombres):
 somme = 0
 for nombre in liste_nombres:
 if nombre % 2 == 0:
 somme += nombre
 return somme

# Test
ma_liste = [1, 2, 3, 4, 5, 6]
print(somme_pairs(ma_liste))

ma_liste_2 = [10, 15, 20, 25]
print(somme_pairs(ma_liste_2))

Résultat attendu pour l'exemple :
12
30

Point méthode : Décomposer le problème en petites étapes (initialiser, parcourir, vérifier, ajouter) est une bonne pratique. N'oublie pas le return à la fin de ta fonction.

Exercice 5 : Vérifier si un nombre est premier (Moyen)

Écris une fonction Python nommée est_premier qui prend un entier positif n en argument et retourne True si n est un nombre premier, False sinon. (6 points)

Rappel : Un nombre premier est un entier naturel supérieur à 1 qui n'a que deux diviseurs distincts entiers et positifs : 1 et lui-même.

# Exemples d'appels :
# print(est_premier(7)) # Doit afficher True
# print(est_premier(10)) # Doit afficher False
# print(est_premier(1)) # Doit afficher False

Correction :

On gère d'abord les cas spéciaux (inférieur ou égal à 1). Ensuite, on parcourt les nombres de 2 jusqu'à la racine carrée de n. Si n est divisible par l'un de ces nombres, il n'est pas premier.

import math

def est_premier(n):
 if n <= 1:
 return False
 # On teste la divisibilité de 2 jusqu'à la racine carrée de n
 # car si n a un diviseur au-delà de sa racine, il en a forcément un en-deçà.
 for i in range(2, int(math.sqrt(n)) + 1):
 if n % i == 0:
 return False
 return True

# Test
print(est_premier(7))
print(est_premier(10))
print(est_premier(1))
print(est_premier(2))
print(est_premier(29))

Résultat attendu pour l'exemple :
True
False
False
True
True

Astuce : L'optimisation en testant jusqu'à la racine carrée de n est très importante pour l'efficacité de l'algorithme, surtout pour les grands nombres.

Exercice 6 : Jeu de devinette de nombre (Moyen)

Écris un programme Python qui implémente un jeu de devinette. Le programme choisit un nombre aléatoire entre 1 et 100. L'utilisateur doit deviner ce nombre. Le programme indique si la proposition est trop grande ou trop petite, et compte le nombre d'essais. Le jeu se termine lorsque le nombre est trouvé. (7 points)

# Importe le module random
# import random

Correction :

On utilise random.randint() pour le nombre secret. Une boucle while continue tant que le nombre n'est pas trouvé. Des conditions if/elif/else guident l'utilisateur.

import random

def jeu_devinette():
 nombre_secret = random.randint(1, 100)
 essais = 0
 devine = 0 # Initialisation pour entrer dans la boucle

 print("Bienvenue au jeu de devinette ! Je pense à un nombre entre 1 et 100.")

 while devine != nombre_secret:
 try:
 devine = int(input("Devine le nombre : "))
 essais += 1
 if devine < nombre_secret:
 print("Trop petit !")
 elif devine > nombre_secret:
 print("Trop grand !")
 else:
 print(f"Bravo ! Tu as trouvé le nombre {nombre_secret} en {essais} essais.")
 except ValueError:
 print("Saisie invalide. Veuillez entrer un nombre entier.")

# Lance le jeu
jeu_devinette()

Exemple de résultat :
Bienvenue au jeu de devinette ! Je pense à un nombre entre 1 et 100.
Devine le nombre : 50
Trop grand !
Devine le nombre : 25
Trop petit !
Devine le nombre : 37
Bravo ! Tu as trouvé le nombre 37 en 3 essais.

Point méthode : La gestion des erreurs avec try-except est une bonne pratique pour rendre ton programme plus robuste face aux saisies utilisateur inattendues.

Exercice 7 : Suite de Fibonacci (Difficile)

Écris une fonction Python nommée fibonacci_suite qui prend un entier n en argument et retourne une liste contenant les n premiers termes de la suite de Fibonacci. (8 points)

Rappel : La suite de Fibonacci commence par 0 et 1. Chaque terme suivant est la somme des deux précédents (0, 1, 1, 2, 3, 5, 8.).

# Exemples d'appels :
# print(fibonacci_suite(0)) # Doit afficher []
# print(fibonacci_suite(1)) # Doit afficher [0]
# print(fibonacci_suite(7)) # Doit afficher [0, 1, 1, 2, 3, 5, 8]

Correction :

On gère les cas n=0 et n=1. Pour n >= 2, on initialise la liste avec les deux premiers termes, puis une boucle while (ou for) ajoute les termes suivants en sommant les deux derniers.

def fibonacci_suite(n):
 if n <= 0:
 return []
 elif n == 1:
 return [0]
 else:
 suite = [0, 1]
 while len(suite) < n:
 next_fib = suite[-1] + suite[-2] # Somme des deux derniers éléments
 suite.append(next_fib)
 return suite

# Test
print(fibonacci_suite(0))
print(fibonacci_suite(1))
print(fibonacci_suite(2))
print(fibonacci_suite(7))
print(fibonacci_suite(10))

Résultat attendu pour l'exemple :
[]
[0]
[0, 1]
[0, 1, 1, 2, 3, 5, 8]
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

Astuce : Pense toujours aux cas limites (ici, n=0 et n=1) avant de développer la logique principale. L'utilisation de suite[-1] et suite[-2] est pratique pour accéder aux derniers éléments d'une liste.

Exercice 8 : Problème "FizzBuzz" (Difficile)

Écris une fonction Python nommée fizzbuzz qui prend un entier max_nombre en argument. Elle doit parcourir les nombres de 1 à max_nombre et afficher :

  • "FizzBuzz" si le nombre est un multiple de 3 et de 5.
  • "Fizz" si le nombre est un multiple de 3.
  • "Buzz" si le nombre est un multiple de 5.
  • Le nombre lui-même sinon.
# Exemple d'appel :
# fizzbuzz(15)

Correction :

Ce problème classique teste la bonne utilisation des conditions avec elif. L'ordre des conditions est important : la condition "FizzBuzz" (multiple de 3 ET 5) doit être vérifiée en premier.

def fizzbuzz(max_nombre):
 for i in range(1, max_nombre + 1):
 if i % 3 == 0 and i % 5 == 0:
 print("FizzBuzz")
 elif i % 3 == 0:
 print("Fizz")
 elif i % 5 == 0:
 print("Buzz")
 else:
 print(i)

# Test
fizzbuzz(15)

Résultat attendu pour fizzbuzz(15) :
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz

Point méthode : L'ordre des conditions if/elif est crucial. Si tu avais mis i % 3 == 0 avant i % 3 == 0 and i % 5 == 0, les multiples de 15 seraient affichés comme "Fizz" et non "FizzBuzz".

Comment ORBITECH Peut T'aider

ORBITECH AI Academy met à ta disposition des outils concrets pour réviser plus efficacement et progresser à ton rythme.

Tous ces outils sont disponibles sur ta plateforme ORBITECH. Connecte-toi et explore ceux qui correspondent le mieux à tes besoins !

Commencer gratuitement

Contenu en libre diffusion — partage autorisé sous réserve de mentionner ORBITECH AI Academy comme source.

COMMENCE DÈS MAINTENANT

Rejoins des milliers d’étudiants qui utilisent ORBITECH pour exceller.

Commencer gratuitement
🌍 ORBITECH AI Academy — Free education in 88 languages for 171 countries