@@ -0,0 +1,12 @@ | |||||
# Exercice: remplacer n, s et x avec de meilleurs noms | |||||
def calcule_moyenne(scores): | |||||
n = len(scores) | |||||
s = 0 | |||||
for x in scores: | |||||
s = s + x | |||||
return s / n | |||||
scores = [2, 3, 5, 4] | |||||
moyenne = calcule_moyenne(scores) | |||||
print(moyenne) |
@@ -0,0 +1,9 @@ | |||||
# Exercice: remplacer le paramètre prénom | |||||
# par appellation | |||||
def dire_bonjour(prénom): | |||||
print("Bonjour " + prénom) | |||||
dire_bonjour("Alice") | |||||
prénom = "Bob" | |||||
dire_bonjour(prénom) |
@@ -0,0 +1,17 @@ | |||||
# Exercice: renommer demander_si_ca_va() en | |||||
# demander_des_nouvelles() et être_poli() | |||||
# en démarrer_conversation() | |||||
def dire_bonjour(appelation): | |||||
print("Bonjour", appelation) | |||||
def demander_si_ca_va(): | |||||
print("Ça va?") | |||||
def être_poli(appelation): | |||||
dire_bonjour(appelation) | |||||
demander_si_ca_va() | |||||
être_poli("Jeanne") |
@@ -0,0 +1,10 @@ | |||||
# Exercice: remplacer le corps de la fonction | |||||
# par une liste par intention | |||||
def liste_des_carrés(n): | |||||
résultat = [] | |||||
for i in range(n): | |||||
résultat.append(i * i) | |||||
return résultat | |||||
print(liste_des_carrés(5)) |
@@ -0,0 +1,12 @@ | |||||
# Exercice: remplacer le corps de la fonction | |||||
# par une liste en compréhension | |||||
def garde_les_positifs(nombres): | |||||
résultat = [] | |||||
for nombre in nombres: | |||||
if nombre > 0: | |||||
résultat.append(nombre) | |||||
return résultat | |||||
nombres = [1, -3, 2, -5, 2, 4] | |||||
print(garde_les_positifs(nombres)) |
@@ -0,0 +1,26 @@ | |||||
# Exercice: découper la fonction servir_le_thé() en trois | |||||
from cuisine import * | |||||
def servir_le_thé(): | |||||
# Faire bouillir l'eau | |||||
allumer_bouilloire() | |||||
attendre_que_ca_bout() | |||||
eteindre_bouilloire() | |||||
# Remplir une tasse | |||||
ouvrir_placard() | |||||
prendre_une_tasse() | |||||
mettre_eau_dans_tasse() | |||||
mettre_thé_dans_tasse() | |||||
attendre_que_ca_infuse() | |||||
fermer_placard() | |||||
# Servir sur un plateau | |||||
prendre_un_plateau() | |||||
mettre_tasse_sur_plateau() | |||||
mettre_sucrière_sur_plateau() | |||||
apporter_le_plateau() | |||||
servir_le_thé() |
@@ -0,0 +1,20 @@ | |||||
# Exercice: rendre la fonction peut_voter() plus lisible | |||||
# et plus explicite | |||||
class Personne: | |||||
def __init__(self, age, nationalité, inscrite): | |||||
self.age = age | |||||
self.nationalité = nationalité | |||||
self.inscrite = inscrite | |||||
def peut_voter(personne): | |||||
return ( | |||||
personne.age >= 18 and personne.nationalité == "Française" and personne.inscrite | |||||
) | |||||
martine = Personne(42, "Française", True) | |||||
assert peut_voter(martine) | |||||
kevin = Personne(12, "Française", True) | |||||
assert not peut_voter(kevin) |
@@ -0,0 +1,18 @@ | |||||
# Exercice: se débarrasser des ifs imbriqués | |||||
def controlle_conducteur(*, sobre, accompagné, permis): | |||||
if sobre: | |||||
if permis: | |||||
return True | |||||
else: | |||||
if accompagné: | |||||
return True | |||||
else: | |||||
return False | |||||
else: | |||||
return False | |||||
assert controlle_conducteur(sobre=True, accompagné=False, permis=True) | |||||
assert controlle_conducteur(sobre=True, accompagné=True, permis=False) | |||||
assert not controlle_conducteur(sobre=True, accompagné=False, permis=False) | |||||
assert not controlle_conducteur(sobre=False, accompagné=False, permis=True) |
@@ -0,0 +1,13 @@ | |||||
# Exercice: remplacer tous les if/else | |||||
# avec un dictionnaire | |||||
def conversion(mesure, unité): | |||||
if unité == "m": | |||||
return mesure | |||||
elif unité == "km": | |||||
return mesure * 1000 | |||||
elif unité == "miles": | |||||
return mesure * 1609 | |||||
print("3 km =", conversion(3, "km"), "m") | |||||
print("2 miles =", conversion(2, "miles"), "m") |
@@ -0,0 +1,10 @@ | |||||
# Exercice: ne pas utiliser la double négation | |||||
def faire_le_café(sans_sucre): | |||||
if not sans_sucre: | |||||
print("avec du sucre") | |||||
else: | |||||
print("sans sucre") | |||||
faire_le_café(sans_sucre=True) | |||||
faire_le_café(sans_sucre=False) |
@@ -0,0 +1,27 @@ | |||||
# Exercice: introduire une classe Article | |||||
# pour éviter la répétition de paramètres | |||||
# titre, contenu, lien, résumé | |||||
def crée_page_web(titre, contenu): | |||||
print("création de la page web") | |||||
slug = titre.lower().replace(" ", "-") | |||||
return "https://blog.e2li/" + slug | |||||
def envoi_email(titre, résumé, lien): | |||||
print("envoi email à propos de", titre) | |||||
def envoi_tweet(titre, résumé, lien): | |||||
print("envoi tweet à propos de", titre) | |||||
def publie_article(titre, résumé, contenu): | |||||
lien = crée_page_web(titre, contenu) | |||||
envoi_email(titre, résumé, lien) | |||||
envoi_tweet(titre, résumé, lien) | |||||
titre = "Un super titre" | |||||
résumé = "Un super résumé" | |||||
contenu = "Du contenu de qualité" | |||||
publie_article(titre, résumé, contenu) |
@@ -0,0 +1,39 @@ | |||||
# Exercice: introduire une classe Commande pour | |||||
# éviter las répétition des paramètres | |||||
# allongé, noisette et sans_sucre | |||||
from cuisine import * | |||||
def commande_café(allongé, noisette, sans_sucre): | |||||
print("Je voudrais un café", end=" ") | |||||
if allongé: | |||||
print("allongé", end=" ") | |||||
else: | |||||
print("serré", end=" ") | |||||
if noisette: | |||||
print("noisette", end=" ") | |||||
if sans_sucre: | |||||
print("sans sucre", end=" ") | |||||
print() | |||||
faire_le_café(allongé, noisette, sans_sucre) | |||||
servir_café() | |||||
def faire_le_café(allongé, noisette, sans_sucre): | |||||
avec_sucre = not sans_sucre | |||||
if allongé: | |||||
rajouter_eau() | |||||
if noisette: | |||||
rajouter_lait() | |||||
if avec_sucre: | |||||
rajouter_sucre() | |||||
def servir_café(): | |||||
print("voici") | |||||
commande_café(False, False, False) | |||||
commande_café(False, True, False) | |||||
commande_café(True, True, False) |
@@ -0,0 +1,90 @@ | |||||
# Rien à changer ici :) | |||||
import time | |||||
def pause(f): | |||||
def res(): | |||||
f() | |||||
time.sleep(0.3) | |||||
return res | |||||
@pause | |||||
def allumer_bouilloire(): | |||||
print("Bouilloire allumée") | |||||
@pause | |||||
def ouvrir_placard(): | |||||
print("Placard ouvert") | |||||
@pause | |||||
def fermer_placard(): | |||||
print("Placard fermé") | |||||
@pause | |||||
def attendre_que_ca_bout(): | |||||
print("...") | |||||
@pause | |||||
def eteindre_bouilloire(): | |||||
print("Bouilloire éteinte") | |||||
@pause | |||||
def prendre_une_tasse(): | |||||
print("Tasse en main") | |||||
@pause | |||||
def mettre_eau_dans_tasse(): | |||||
print("Versement de l'eau dans la tasse") | |||||
@pause | |||||
def mettre_thé_dans_tasse(): | |||||
print("Ajout du thé dans la tasse") | |||||
@pause | |||||
def attendre_que_ca_infuse(): | |||||
print("...") | |||||
@pause | |||||
def prendre_un_plateau(): | |||||
print("Plateau en main") | |||||
@pause | |||||
def mettre_tasse_sur_plateau(): | |||||
print("Le plateau contient une tasse") | |||||
@pause | |||||
def mettre_sucrière_sur_plateau(): | |||||
print("Le plateau contient une sucrière") | |||||
@pause | |||||
def apporter_le_plateau(): | |||||
print("Le plateau arrive sur la table") | |||||
@pause | |||||
def rajouter_eau(): | |||||
print("Rajouter eau") | |||||
@pause | |||||
def rajouter_lait(): | |||||
print("Rajouter lait") | |||||
@pause | |||||
def rajouter_sucre(): | |||||
print("Rajouter sucre") |