EC321 : évaluation en contrôle continu
Durée : 1h30
Tout document autorisé
1. Saisie clavier
Test de Ruffier-Dickson
Le test de Ruffier-Dickson est un test physique qui permet d'évaluer l'aptitude d'une personne à la pratique sportive. Ce test peut être, par exemple, pratiqué sous le contrôle d'un médecin afin d'obtenir un certificat médical de non contre-indication à une pratique sportive.
Le test se déroule en trois étapes:
- après un repos (couché) de quelques minutes, une prise de pouls du sujet donne la valeur P0 (en pulsations par minute)
- le sujet doit ensuite se lever et effectuer 30 flexions complètes de jambes en 45 secondes, bras tendus devant lui. Le pouls P1 est pris immédiatement après
- puis le sujet s'allonge à nouveau, et exactement une minute après la fin des flexions on relève une dernière fois sa fréquence cardiaque P2
L'indice de Ruffier-Dickson Id permet de quantifier l'adaptation à l'effort. Il se calcule de la manière suivante :
Id = [ ( P1 - 70 ) + 2 × ( P2 - P0 ) ] / 10
Intervalle | Adaptation à l'effort |
---|---|
Id = 0 | excellente |
0 < Id ≤ 2 | très bonne |
2 < Id ≤ 4 | bonne |
4 < Id ≤ 6 | moyenne |
6 < Id ≤ 8 | faible |
8 < Id ≤ 10 | très faible |
Id > 10 | mauvaise |
Exercice 1
Écrivez un script ruffier-dickson.py
qui calcule l'indice de Ruffier-Dickson à partir de
la saisie au clavier des féquences cardiaques P0, P1 et P2 et affiche une interprétation
en fonction de sa valeur.
#############################
# #
# Test de Ruffier-Dickson #
# #
#############################
P0 (ppm) ? 60
P1 (ppm) ? 80
P2 (ppm) ? 62
Id = 1.4
moyenne adaptation à l'effort
print('\n\n')
print('#############################')
print('# #')
print('# Test de Ruffier-Dickson #')
print('# #')
print('#############################')
print('\n')
p0 = float(input('P0 (ppm) ? '))
p1 = float(input('P1 (ppm) ? '))
p2 = float(input('P2 (ppm) ? '))
id = ( (p1 - 40) + 2*(p2 - p0) ) / 10
if id==0:
interpretation = 'excellente'
elif id<=2:
interpretation = 'très bonne'
elif id<=4:
interpretation = 'bonne'
elif id<=6:
interpretation = 'moyenne'
elif id<=8:
interpretation = 'faible'
elif id<=10:
interpretation = 'très faible'
else:
interpretation = 'mauvaise'
print('\nId =', id)
print(interpretation, 'adaptation à l\'effort')
2. Fichier Excel
Le fichier L2.xlsx
contient différents relevés effectués par et sur
des étudiants de L2 STAPS.
Exercice 2
Écrivez un script statistics.py
qui calcule quelques statistiques descriptives
à partir des données du fichier Excel L2.xlsx
.
Statistiques descriptives du fichier L2.xlsx
============================================
171 étudiants recensés
Âge moyen 19.5 ± 1.0
30 % de femmes
70 % d'hommes
54 % de licenciés en club
46 % de non licenciés
import pandas as pd
df = pd.read_excel('L2.xlsx')
total = len(df.index)
female = df[ df['Sexe'] == "femme" ]
female_percentage = round(len(female.index) * 100 / total)
licensed = df[ df['Licencié'] == "oui" ]
licensed_percentage = round(len(licensed.index) * 100 / total)
print('\n\nStatistiques descriptives du fichier L2.xlsx')
print('============================================\n')
print(total, 'étudiants recensés')
print('\nÂge moyen', round(df['Age'].mean(), 1), '±', round(df['Age'].std(), 1))
print()
print(female_percentage, '% de femmes')
print(100-female_percentage, '% d\'hommes')
print()
print(licensed_percentage, '% de licenciés en club')
print(100-licensed_percentage, '% de non licenciés')
Exercice 3
Écrivez un script ruffier-dickson-excel.py
qui, après avoir chargé le fichier L2.xlsx
,
calcule l'indice de Ruffier-Dickson pour tous les étudiants et stocke le résultat dans une
nouvelle colonne nommée Id
.
Le nouveau DataFrame sera sauvegardé dans un fichier Excel L2_Id.xlsx
import pandas as pd
df = pd.read_excel('L2.xlsx')
for i in df.index:
if df['P0 (ppm)'][i] < df['P1 (ppm)'][i]:
df.loc[i, 'Id'] = ( (df['P1 (ppm)'][i] - 40) + 2*(df['P2 (ppm)'][i] - df['P0 (ppm)'][i]) ) / 10
else:
df.loc[i, 'Id'] = ( (df['P0 (ppm)'][i] - 40) + 2*(df['P2 (ppm)'][i] - df['P1 (ppm)'][i]) ) / 10
writer = pd.ExcelWriter('L2_Id.xlsx', engine = 'xlsxwriter')
df.to_excel(writer, index = False)
writer.save()
3. API
L'API FruityVice recense les qualités nutritionnelles de
plusieurs fruits. L'adresse
https://www.fruityvice.com/api/fruit/all
permet de récupérer la liste de tous les fruits.
Exercice 4
Écrivez un script get_fruit_names.py
qui affiche le nombre de fruits trouvés dans la liste et leur
nom.
42 fruits found :
Apple
Apricot
Avocado
Banana
Blackberry
Blueberry
Cherry
Chocolate
Cranberry
Dragonfruit
...
import requests as rq
response = rq.get('https://www.fruityvice.com/api/fruit/all')
if response.status_code == 200:
fruit_list = response.json()
print(len(fruit_list), 'fruits found :')
for fruit in fruit_list:
print(fruit['name'])
else:
print('Error', response.status_code, response.reason)
Exercice 5
Écrivez un script get_fruit_properties.py
qui, à partir de la saisie du nom d'un fruit, recherche
ses qualités nutritionnelles dans
les résultats fournis par l'API.
Enter a fruit name: Tomato
Nutritions (100 g):
- Carbohydrates: 3.9 g
- Protein: 0.9 g
- Fat: 0.2 g
- Calories: 74 g
- Sugar: 2.6 g
import requests as rq
fruit_name = input('Enter a fruit name: ')
response = rq.get('https://www.fruityvice.com/api/fruit/' + fruit_name)
if response.status_code == 200:
fruit = response.json()
print('Nutritions (100 g):')
print('- Carbohydrates:', fruit['nutritions']['carbohydrates'], 'g')
print('- Protein: ', fruit['nutritions']['protein'], 'g')
print('- Fat: ', fruit['nutritions']['fat'], 'g')
print('- Calories: ', fruit['nutritions']['calories'], 'g')
print('- Sugar: ', fruit['nutritions']['sugar'], 'g')
else:
print('Error', response.status_code, response.reason)
Exercice 6
Écrivez un script record_fruit_properties.py
qui stocke l'ensemble des qualités nutritionnelles
dans un
DataFrame
afin de le sauvegarder dans un fichier Excel fruits.xlsx
.
name carbohydrates protein fat calories sugar
0 Apple 11.4 0.3 0.4 52 10.3
1 Apricot 3.9 0.5 0.1 15 3.2
2 Avocado 8.53 2 14.66 160 0.66
3 Banana 22 1 0.2 96 17.2
4 Blackberry 9 1.3 0.4 40 4.5
5 Blueberry 5.5 0 0.4 29 5.4
6 Cherry 12 1 0.3 50 8
7 Chocolate 58 8.51 30.57 531 54
8 Cranberry 12.2 0.4 0.1 46 4
9 Dragonfruit 9 9 1.5 60 8
10 Durian 27.1 1.5 5.3 147 6.75
11 Feijoa 8 0.6 0.4 44 3
12 Fig 19 0.8 0.3 74 16
13 Gooseberry 10 0.9 0.6 44 0
... ... ... ... ... ... ...
import requests as rq
import pandas as pd
response = rq.get('https://www.fruityvice.com/api/fruit/all')
if response.status_code == 200:
fruit_list = response.json()
df = pd.DataFrame([], columns=['name', 'carbohydrates', 'protein', 'fat', 'calories', 'sugar'])
i = 0
for fruit in fruit_list:
df.loc[i, 'name'] = fruit['name']
df.loc[i, 'carbohydrates'] = fruit['nutritions']['carbohydrates']
df.loc[i, 'protein'] = fruit['nutritions']['protein']
df.loc[i, 'fat'] = fruit['nutritions']['fat']
df.loc[i, 'calories'] = fruit['nutritions']['calories']
df.loc[i, 'sugar'] = fruit['nutritions']['sugar']
i += 1
writer = pd.ExcelWriter('fruits.xlsx', engine = 'xlsxwriter')
df.to_excel(writer, index = False)
writer.save()
else:
print('Error', response.status_code, response.reason)