edit code python dans le tp choixpeau, ajout sources, typo et suppression lignes inutiles

This commit is contained in:
2024-04-12 10:51:32 +02:00
parent 0fac01add4
commit 2b26f21dcd
3 changed files with 51 additions and 34 deletions

View File

@@ -1,6 +1,6 @@
## Aidons le Choixpeau magique
## Choixpeau Magique et KNN
## Durée estimée : 70 min
##
### Contexte
@@ -8,7 +8,7 @@
### Données disponibles
Le Choixpeau magique dispose d'un fichier CSV avec les données d'un échantillon d'élèves. Les 6 premières lignes du fichier sont les suivantes :
Le Choixpeau magique dispose d'un [fichier csv](choixpeauMagique.csv) avec les données d'un échantillon d'élèves. Les 6 premières lignes du fichier sont les suivantes :
| Nom | Courage | Loyauté | Sagesse | Malice | Maison |
| -------- | ------- | ------- | ------- | ------ | ---------- |
@@ -59,29 +59,33 @@ $$
```python
import csv
def charger_table(nom_fichier):
"""
Permet de charger une liste d'élèves à partir d'un fichier CSV
Paramètre : le nom d'un fichier CSV
Résultat : la liste des élèves
"""
: fonction charger_table : Permet de charger une liste d'élèves à partir d'un fichier CSV
: param nom_fichier : le nom d'un fichier CSV
: return table : la liste des élèves
"""
table= []
with open(nom_fichier, 'r',newline="",encoding="utf-8") as csvfile:
eleve_reader = csv. reader(csvfile, delimiter=";")
eleve_reader.__next__()
for eleve in eleve_reader:
table.append({ "nom": eleve[0],
"courage": int(eleve[1]),
"loyauté": int(eleve[2]),
"sagesse":int(eleve[3]),
"malice":int(eleve[4]),
"maison" : eleve[5]})
return table
table= []
with open(nom_fichier, 'r',newline="",encoding="utf-8") as csvfile:
eleve_reader = csv. reader(csvfile, delimiter=";")
eleve_reader.__next__()
for eleve in eleve_reader:
table.append({ "nom": eleve[0],
"courage": int(eleve[1]),
"loyauté": int(eleve[2]),
"sagesse":int(eleve[3]),
"malicez":int(eleve[4]),
"maison" : eleve[5]})
return table
```
L'instruction suivante permet de charger les informations dans une variable poudlard à partir d'un fichier choixpeauMagique. csv qui se trouve dans le**répertoire courant :
L'instruction suivante permet de charger les informations dans une variable **poudlard** à partir d'un fichier choixpeauMagique. csv qui se trouve dans le répertoire courant (n'oubliez pas de l'y déposer ! ) :
```python
poudlard = charger_table("choixpeauMagique.csv")
@@ -89,7 +93,7 @@ poudlard = charger_table("choixpeauMagique.csv")
1. Dans le code de la fonction charger _table, à la ligne 14, quel est le type de la variable eleve[0] ?
2. Quel est le type de int ( eleve [ 0]) ? Pourquoi a-t-on besoin de la fonction int() ici?
2. Quel est le type de int ( eleve [ 0] ) ? Pourquoi a-t-on besoin de la fonction int() ici?
3. Quel est le type de la variable poudlard ?
@@ -106,24 +110,21 @@ On souhaite écrire le code d'une fonction qui prend en paramètre une liste d'
```python
def frequence_des_maisons(table):
"""
Paramètre: une liste d'élèves, chaque élève étant modélisé par un dictionnaire
Résultat: un dictionnaire dont les clés sont les maisons et les valeurs, le nombre de fois où cette maison apparaît.
"""
frequences={}
"""
Paramètre: une liste d'élèves, chaque élève étant modélisé par un dictionnaire
Résultat: un dictionnaire dont les clés sont les maisons et les valeurs, le nombre de fois où cette maison apparaît.
"""
frequences={}
for eleve in table:
maison= eleve["maison"]
maison = eleve["maison"]
if maison in frequences.keys():
frequences[maison] frequences[maison] + 1
frequences[maison] = frequences[maison] + 1
else:
frequences[maison] = 1
return frequences
assert frequence_des_maisons(poudlard) == {'Serpentard': 12,'Gryffondor': 17, 'Serdaigle': 11, 'Poufsouffie': 10}
```
1. Quelle est la signification du nombre 12 qui apparait ligne 17 ?
2. Écrire le code de la fonction rnaison_majoritaire qui prend une liste d'élèves en paramètre et qui renvoie le nom de la maison la plus représentée.
1. Écrire le code de la fonction *maison_majoritaire* qui prend une liste d'élèves en paramètre et qui renvoie le nom de la maison la plus représentée.
@@ -135,7 +136,7 @@ assert frequence_des_maisons(poudlard) == {'Serpentard': 12,'Gryffondor': 17, 'S
1. Compléter la formulation de l'algorithme suivant.
1. Écrire et compléter en pseudo code l'algorithme qui suit :
Données:
@@ -143,6 +144,12 @@ assert frequence_des_maisons(poudlard) == {'Serpentard': 12,'Gryffondor': 17, 'S
- nouveau: un nouvel élève qui n'a pas encore de maison.
- Résultat : les 7 plus proches voisins du nouveau.
Algorithme :
- à compléter
- à compléter
- à compléter
2. Implémenter cet algorithme en Python
-------
@@ -167,3 +174,13 @@ Algorithme :
- Parmi ces proches_voisins, trouver la maison majoritaire.
- Renvoyer la maison_majoritaire.
- Implémenter cet algorithme en Python
----------
Sources :
- Prépabac NSI (Édition Hatier)
- [Site de l'académie de Nantes](https://www.pedagogie.ac-nantes.fr/enseignements-informatiques/enseignement/nsi/mini-projet-choixpeau-magique-1447870.kjsp?RH=1158678510343)
- [Gitlab de David Landry](https://gitlab.com/david_landry/nsi)

Binary file not shown.