EC321 : évaluation en contrôle continu
Durée : 2h
Tout document autorisé
1. Saisie clavier
Estimation de la masse grasse
La méthode des 3 plis cutanés proposée par Jackson et Pollock permet d'estimer le pourcentage de masse graisseuse en fonction de l'âge A et du genre du sujet.
- P1 : pli au niveau du triceps
- P2 : pli Supra iliaque
- P3 : pli au niveau de la cuisse
La densité corporelle D est calculée selon les formules suivantes.
Pour une femme :
D = 1.0994921 - 0.0009929 × (P1 + P2 + P3) + 0.0000023 × (P1 + P2 + P3)2 - 0.0001392 × A
Pour un homme :
D = 1.10938 - 0.0008267 × (P1 + P2 + P3) + 0.0000016 × (P1 + P2 + P3)2 - 0.0002574 × A
Le pourcentage de masse graisseuse PMG est défini comme suit :
PMG = 495 / D - 450
Exercice 1
Écrivez un script body-fat.py
qui calcule le pourcentage de masse graisseuse à partir de
la saisie au clavier des plis cutanés P1, P2 et P3 de l'âge A et du genre du
sujet.
Homme (H) ou femme (F) ? H
Age ? 50
pli au niveau du triceps (mm) ? 7
pli Supra iliaque (mm) ? 12
pli au niveau de la cuisse (mm) ? 11
Masse grasse : 11 %
gender = input('Homme (H) ou femme (F) ? ')
age = float(input('Age ? '))
p1 = float(input('pli au niveau du triceps (mm) ? '))
p2 = float(input('pli Supra iliaque (mm) ? '))
p3 = float(input('pli au niveau de la cuisse (mm) ? '))
s = p1 + p2 + p3
if gender == 'F':
body_density = 1.0994921 - 0.0009929 * s + 0.0000023 * s * s - 0.0001392 * age
else:
body_density = 1.10938 - 0.0008267 * s + 0.0000016 * s * s - 0.0002574 * age
body_fat = 495 / body_density - 450
print('Masse grasse :', round(body_fat), '%')
2. Fichier Excel
Le fichier NBA2021-2022.xlsx
contient l'intégralité des matchs de la saison 2021-2022 de la
NBA.
Exercice 2
Écrivez un script best-score-west-conference.py
qui affiche le plus gros score marqué par
une
équipe de la conférence West.
157
import pandas as pd
games = pd.read_excel('EC321/NBA2021-2022.xlsx')
west_home_games = games[ games['home_team_conference'] == 'West' ]
home_best = west_home_games['home_team_score'].max()
west_visitor_games = games[ games['visitor_team_conference'] == 'West' ]
visitor_best = west_visitor_games['visitor_team_score'].max()
print(max(home_best, visitor_best))
Exercice 3
Écrivez un script biggest-score-difference.py
qui affiche la date du match, ainsi que le
nom des équipes, durant lequel on a observé la plus grande différence de score.
2021-12-02
MEM 152
OKC 79
import pandas as pd
games = pd.read_excel('EC321/NBA2021-2022.xlsx')
for i in games.index:
games.loc[i, 'difference'] = abs(games['home_team_score'][i] - games['visitor_team_score'][i])
idmax = games['difference'].idxmax()
print(games['date'][idmax])
print(games['home_team_name'][idmax], games['home_team_score'][idmax])
print(games['visitor_team_name'][idmax], games['visitor_team_score'][idmax])
3. API
L'API CityBikes répertorie les opérateurs de vélos en libre service à travers le monde.
Exercice 4
Écrivez un script operators.py
qui affiche la liste des opérateurs présents sur le
territoire français.
Opérateurs en France :
- Vélib' Métropole
- Libélo
- LE vélo Star
- V³
- V'Lille
- IDECycle
- cy'clic
- Vélô
- Vélam
- VéloCité
...
import requests as rq
response = rq.get('http://api.citybik.es/v2/networks')
if response.status_code == 200:
data = response.json()
for operator in data['networks']:
if operator['location']['country'] == 'FR':
print(operator['name'])
else:
print('Error', response.status_code, response.reason)
Exercice 5
Écrivez un script operators-map.py
qui, sur un fond de carte centrée sur Paris,
place un marqueur pour chaque opérateur sur le territoire français avec une info bulle contenant
le nom de l'opérateur et le nombre de stations de vélos en libre service.
import requests as rq
import folium as fl
m = fl.Map(location=[48.856612, 2.352233], tiles='OpenStreetMap', zoom_start=5)
response = rq.get('http://api.citybik.es/v2/networks')
if response.status_code == 200:
data = response.json()
for operator in data['networks']:
if operator['location']['country'] == 'FR':
response = rq.get('http://api.citybik.es' + operator['href'])
if response.status_code == 200:
details = response.json()
info = details['network']['name'] + '
' + \
str(len(details['network']['stations'])) + ' stations'
fl.Marker([operator['location']['latitude'], operator['location']['longitude']],
popup=info).add_to(m)
else:
print('Error', response.status_code, response.reason)
else:
print('Error', response.status_code, response.reason)
m.save('operators.html')