| @@ -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") | |||||