Cours Python – 16 Octobre 2025
Correction Évaluation
Réponses : 12, 30 (j’ai oublié le 10 dans le calcul).
n % 2 == 0
→ le reste permet de vérifier si un nombre est pair.
Itérations et boucles
Exemple de boucle dans une boucle : table de multiplication :
for i in range(10):
for j in range(10):
print(f"{i} * {j} = {i*j}")
Compteur de valeurs positives (pseudo-code)
Erreur courante : le compteur s’incrémente même pour x < 0
si la condition else_if
est mal gérée.
ALGORITHM CountPositive
VARIABLES:
l: LIST // liste de nombres
cpt: INT // compteur de valeurs positives
x: INT
BEGIN
cpt <- 0
FOR EACH x IN l
IF x > 0 THEN
cpt <- cpt + 1
ELSE_IF x < 0 THEN
cpt <- cpt ou cpt <- cpt + 0
END_IF
END_FOR
RETURN cpt
END
⚠️ Erreur fréquente pour la seconde incrémentation : supprimer la condition (mettre +0 au compteur fonctionne mais n’est pas optimisé). Il suffit ici de supprimer simplement la condition ELSE_IF
Fonction pair ou impair
Solution classique :
def pair_ou_impair(n):
if n % 2 == 0:
return "pair"
else:
return "impair"
Solution simplifiée avec indentation :
def pair_ou_impair(n):
if n % 2 == 0:
return "pair"
return "impair"
Exercice factorielle
Résolution : reponse ok.
Palindrome (solution formateur)
def est_palindrome(texte):
lettres = "abcdefghijklmnopqrstuvwxyz"
gauche_a_droite = []
droite_a_gauche = []
for lettre in texte.lower():
if lettre in lettres:
gauche_a_droite.append(lettre)
droite_a_gauche.insert(0, lettre) # ajoute à l'index 0 pour inverser
return gauche_a_droite == droite_a_gauche
Sujet du jour : Les fonctions
Lien Google Colab : Colab
Une fonction réalise une action spécifique, permet d'abstraire la complexité du code et rend le programme plus lisible et fluide.
Principe DRY : Don’t Repeat Yourself → éviter la duplication de code.
Syntaxe
def nom_de_fonction(param1, param2):
"""Docstring : description de la fonction"""
# corps de la fonction
return resultat
Exemple :
def aire_rectangle(largeur, hauteur):
"""Calcule l'aire d'un rectangle en unités carrées."""
return largeur * hauteur
print(aire_rectangle(4, 7)) # 28
Différence entre print
et return
:
print()
affiche un résultat à l’écran mais ne le renvoie pas.return
renvoie une valeur utilisable dans le programme et arrête la fonction.
Paramètres et valeurs par défaut
Paramètres :
- Positionnels : ordre important lors de l’appel.
- Nommés : on précise le nom lors de l’appel.
- Valeur par défaut :
def f(param1, param2=valeur)
.
*args et **kwargs
*args → permet de passer un nombre indéterminé de paramètres sous forme de tuple :
def somme(*args):
total = 0
for n in args:
total += n
return total
print(somme(1, 2, 3)) # 6
print(somme(10, -5, 4, 1)) # 10
**kwargs → capture des paramètres nommés additionnels sous forme de dictionnaire :
def infos_personne(**kwargs):
return kwargs
print(infos_personne(nom="Ada", pays="UK", domaine="Math/CS"))
# {'nom': 'Ada', 'pays': 'UK', 'domaine': 'Math/CS'}
Le paramètre * dans la déclaration force la nomination :
def config_connexion(hote, *, port=5432, ssl=False):
...
Docstring et annotations de type
Docstring : texte explicatif entre triple guillemets immédiatement après la déclaration.
def moyenne(notes: list[float]) -> float:
"""Calcule la moyenne d'une liste de notes."""
return sum(notes)/len(notes)
- Permet de documenter le rôle de la fonction et les cas particuliers.
- Les annotations aident le lecteur mais n’imposent pas de contrainte stricte.
Portée et principe LEGB
LEGB : Local → Enclosing → Global → Builtins.
x = 10 # globale
def f():
x = 5 # locale
print("locale x =", x)
def g():
global x
x = 99 # modifie la variable globale
f()
print("globale x =", x)
g()
print("globale x après g() =", x)
Pass
Le mot-clé pass
permet de passer une instruction vide pour éviter les erreurs de syntaxe.
Fonctions pures et effets de bord
- Fonction pure : toujours la même sortie pour les mêmes paramètres.
- Effets de bord : modifications de l’environnement extérieur à la fonction, à contrôler.
- Mutabilité : certains objets modifiables peuvent entraîner des effets de bord, à gérer en créant des copies si nécessaire.
Ressources à explorer
- Codingame
- Advent of Code
- Illustration du principe DRY sur Google Colab (cf lien ci-dessus).