TP5 : Fonctions et Fichiers

Lien vers le repository GitHub du TP : https://classroom.github.com/a/qRVUwdoz

Exercice 1

Le code suivant essaye de calculer le solde d’un compte épargne ayant un taux d’intérêt de 5% et un solde initial de 100 € après quatre années.

solde = 100
def ajoute_intérêt(solde,taux) :
    solde += solde * taux/100
    
for année in range(4) :
    ajoute_intérêt(100,5)
    print('Solde après l\'année {} : {:.2f} €'.format(année+1,solde))
Solde après l'année 1 : 100.00 €
Solde après l'année 2 : 100.00 €
Solde après l'année 3 : 100.00 €
Solde après l'année 4 : 100.00 €

Expliquer pourquoi cela ne marche pas et trouver une alternative (exo_1.md et exo_1.py)

Question subsidiaire : dans Futurama, Fry a été cryogénisé alors qu’il avait 93 cts sur son compte en banque. 1000 ans plus tard, il retourne dans sa banque. Combien lui ont rapporté les 2,25% d’intérêt ?Faire afficher le résultat par exo_1.py.

Exercice 2

La portée d’un projectile lancé avec un angle $\alpha$ et une vitesse $v$ depuis le sol sur un terrain plat vaut (si on néglige les frottements, la courbure et la rotation de la Terre) : $d = \frac{v^2 \sin 2\alpha}{g}$ où $g$ est la pesanteur ($g = 9,81\text{ m.s}^{-2}$). La hauteur maximale atteinte par le projectile (la flèche) est : $h = \frac{v^2 \sin ^2 \alpha}{2g}$

Écrire dans exo_2.py une fonction qui renvoie la portée et la hauteur atteinte par un projectile en prenant $\alpha$ et $v$ en argument. Tester la fonction pour $\alpha = 30°$ et $v=10\text{ m.s}^{-1}$.

 

Exercice 3

Écrire dans exo_3.py deux fonctions prenant chacune en argument deux listes de trois nombres représentant les coordonnées de deux vecteurs et qui renvoient le produit scalaire et le produit vectoriel de ces deux vecteurs.

 

Exercice 4

Écrire dans exo_4.py un testeur de tautologie :

  • Écrire d’abord une fonction rel_1(a,b) (de signature rel_1(bool,bool)$\rightarrow$ bool) qui retourne $\neg(a\lor b)$ et une fonction rel_2(a,b) (de signature rel_2(bool,bool)$\rightarrow$ bool) qui retourne $\neg a \land \neg b$.

  • Puis écrire une fonction test_tauto(fct_1,fct_2) (de signature test_tauto(fonction,fonction)$\rightarrow$ bool) qui teste si l’équivalence matérielle (correspondant à l’opérateur Python ==) entre deux fonctions logiques (à deux entrées chacune) $\text{fct}_1(a,b)\leftrightarrow \text{fct}_2(a,b)$ est une tautologie (cela revient à déterminer si les deux fonctions sont d’accord dans tous les cas possibles, donc si leurs tables de vérité sont les mêmes).
    La fonction test_tauto prouve donc l’équivalence logique entre les deux fonctions logiques : $\text{fct}_1\equiv \text{fct}_2$

  • Prouvez alors la premiere loi de De Morgan : $\neg(a\lor b)\equiv \neg a\land\neg b$.

Petit cours sur l’algèbre booléenne dans cette vidéo.

 


Exercice 5

De nombreuses données scientifiques se présentent sous forme de tableaux ; une façon simple de les transmettre est de les représenter par un fichier CSV (pour comma-separated value) : il s’agit d’un simple fichier texte, chaque ligne de texte correspondant à une ligne du tableau et un caractère spécial (virgule ou point-virgule le plus souvent) aux séparations entre les colonnes.

Le fichier meteo.csv donne le cumul des précipitations (en mm) et l’ensoleillement (en h) pour différentes villes pour l’année 2018.Écrire dans exo_5.py un programme qui récupère les données et affiche les villes de la plus pluvieuse à la moins pluvieuse puis les villes de la plus ensoleillée à la moins ensoleillée.Attention, le séparateur décimal de ces données n’est pas le point anglo-saxon (utilisé par Python) mais la virgule. Il faudra les remplacer par des points grâce à la méthode de chaine de caractères .replace('ancien','nouveau'). Le séparateur de colonne est, lui, le point-virgule.

 

Exercice 6

Compléter le programme exo_6.py pour que le fichier texte créé ( samedi_censure.txt) soit une copie censurée du texte dans samedi.txt ; les noms propres “Françoise”, “Mirougrain”, “Eulalie”, “Octave” et “Legrandin” devront être remplacés par des astérisques.Ajouter ensuite le texte censuré samedi_censure.txt au repository.

 

Exercice 7

En utilisant la librairie PIL, créer un programme (exo_7.py) qui importe l’image ascii.jpg et la convertit en “ASCII art” en imprimant à l’écran des caractères différents en fonction de la valeur de l’intensité moyenne d’un pixel.

Exercice 8

Modifier le fichier exo_8.py pour qu’il affiche le graphique des patients en réa pour toute la France lorsque l’utilisateur tape 0 lors du choix du département.