# Oic_02 L1-Z : semaine du 03 février 2024
Exercice de formalisation des programmes en binôme.
## TP : Calcul de moyenne
*Situation* : l'évaluation dans le cours de programmation fonctionnelle se passe de la manière suivante : l'enseignant.e calcule la moyenne des trois meilleures notes obtenues par chaque étudiant.e. Par ailleurs, pour valoriser la progression des étudiant.es, l'enseignant ajoute un point à la note finale si la moyenne des deux dernières notes est supérieure à la moyenne des deux premières.
Ex : J. a eu les notes suivantes au cours du semestre :
notes : 12 11 14 13 12
note finale : 13 + 1 = 14.
**En binôme** : Écrire un programme qui donne calcule cette moyenne à partir des notes obtenues par les étudiant.es au cours du semestre. Les notes sont lues dans un fichier texte que vous devez créer.
Binômes à renseigner ici : https://lite.framacalc.org/f4kbz3tt40-acno
==Avant de vous mettre à coder== :
- définissez vos besoins
- envisagez tous les cas d'utilisation possibles
- listez les tâches (et sous-tâches) à réaliser
- décidez d'un mode de fonctionnement avec votre binôme
==Puis, toujours avant de vous mettre à coder== :
- décidez des structures de données dont vous allez avoir besoin
- décidez des fonctions et éventuellement des modules que vous allez développer
- décrivez vos fonctions, par fichier :
(ici, la fonction `main` du programme `main.py`)
```
Main.main()->rien
Description : fonction principale du programme de calcul de
moyennes
Paramètres : ???
Valeur de retour : ???
```
:warning: ces étapes sont obligatoires : vous devez rendre avec votre programme un README.txt (ou README.md) qui explique le fonctionnement du programme et comment vous avez procédé pour travailler en équipe. Prenez donc soin de ==documenter== les obstacles, solutions, et choix qui se présentent à vous.
### Extension pour la semaine prochaine **à rendre pour le 06/03 à 20h**:
- l'un.e ajoute une interface de saisie au clavier : le programme demande à l'utilisateur/trice de saisir les notes des étudiant.es
- l'autre ajoute un (joli) affichage final qui donne les moyennes des étudiants classés par ordre alphabétique de nom de famille.
**4 binômes seront tirés au sort pour présenter ce qu'ils et elles ont fait et expliquer comment ils et elles ont fonctionné.**
\+ n'oubliez pas de remplir votre contrat pédagogique https://conpere.univ-paris8.fr
```
Millour_oic_TP2/
src/programme.py
test/test_vide.txt test_2_notes.tkt test_5_notes.txt test_doublon_nom.txt
docs/
README.txt[md]
---------------
README.md
---------------
# Tests
test_vide.txt : le programme n'affiche rien
```
Test de la fonction de lecture de fichier en python :
```python!
print("Premier test (affichage du contenu d'un seul bloc):\n")
f = open('test.txt', 'r')
contenu = f.read()
print(contenu)
f.close()
print("Deuxième test :\n")
with open('test.txt', 'r') as f:
lignes = f.readlines() # Retourne une liste
print("affichage de l'objet 'lignes'\n")
print(lignes)
print("affichage ligne par ligne\n")
i=0
for ligne in lignes:
print(i)
print(ligne)
i+=1
```