Évaluation

Durée : 1 heure
Tout document autorisé

Test de Sargent

Le test de Sargent est un test physique qui permet d'évaluer la détente verticale d'une personne. Ce même test permet aussi d'évaluer la puissance des membres inférieurs.

Le test se déroule en deux étapes:

  1. La personne se tient droite, dos au mur à une distance de 15cm. Elle lève un bras le plus haut possible et on mesure la hauteur H0 (en cm) de l'extrémité des doigts.
  2. Sans changer de position, le personne doit chercher à sauter le plus haut possible. À l'apogée du saut, on mesure la hauteur H1 (en cm) de l'extrémité des doigts.

La détente sèche D correspond à l'écart entre les hauteurs H0 et H1 :

D = H1 - H0

Intervalle Interprétation
D > 71 excellente
66 < D ≤ 71 très bonne
53 < D ≤ 66 bonne
49 < D ≤ 53 moyenne
40 < D ≤ 49 faible
37 < D ≤ 40 insuffisante
D ≤ 37 très insuffisante

Mais à partir de la valeur D de la détente, on peut déduire la puissance des membres inférieurs grâce à la formule d'Harman :

P = 21.2 × D + 23 × M - 1393

M est la masse de l'individu en kg.

Exercice 1

Écrivez un script sargent.py qui calcule la détente sèche et la puissance des membres inférieurs à partir de la saisie au clavier des hauteurs H0, H1 et de la masse M.



#####################
#                   #
#  Test de Sargent  #
#                   #
#####################


H0 (cm) ? 245
H1 (cm) ? 298
M  (kg) ? 84

D = 53.0 cm
Détente sèche moyenne

P = 1663 W
Correction
print('\n\n')
print('#####################')
print('#                   #')
print('#  Test de Sargent  #')
print('#                   #')
print('#####################')
print('\n')

h0 = float(input('H0 (cm) ? '))
h1 = float(input('H1 (cm) ? '))
m  = float(input('M  (kg) ? '))

d = h1 - h0

if d > 71:
    interpretation = 'excellente'
elif d > 66:
    interpretation = 'très bonne'
elif d > 53:
    interpretation = 'bonne'
elif d > 49:
    interpretation = 'moyenne'
elif d > 40:
    interpretation = 'faible'
elif d > 37:
    interpretation = 'insuffisante'
else:
    interpretation = 'très insuffisante'

print('\nD =', d, 'cm')
print('Détente sèche', interpretation)
print('\nP =', round(21.2 * d + 23.0 * m - 1393), 'W')

Le fichier L2.xlsx contient différents relevés effectués par et sur des étudiants de L2 STAPS.

Télécharger le fichier

Exercice 2

Écrivez un script l2_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
Correction
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 sargent-excel.py qui, après avoir chargé le fichier L2.xlsx, calcule la détente sèche pour tous les étudiants et stocke le résultat dans une nouvelle colonne nommée D.

Le nouveau DataFrame sera sauvegardé dans un fichier Excel L2_D.xlsx

Attention

Le fichier contient des erreurs de retranscription : pour certaines lignes, les hauteurs sont exprimées en mètre. Vous veillerez à effectuer les conversions si nécessaire avant le calcul de la détente sèche.
Correction
import pandas as pd

df = pd.read_excel('L2.xlsx')

for i in df.index:
    if df['Hauteur sans saut (cm)'][i] < 100:
        df.loc[i, 'D'] = ( df['Hauteur avec saut (cm)'][i] - df['Hauteur sans saut (cm)'][i] ) * 100
    else:
        df.loc[i, 'D'] = df['Hauteur avec saut (cm)'][i] - df['Hauteur sans saut (cm)'][i]

writer = pd.ExcelWriter('L2_D.xlsx', engine = 'xlsxwriter')
df.to_excel(writer, index = False)
writer.save()

Exercice 4

À partir des données du fichier L2_D.xlsx, écrivez un script sargent-best-worst.py qui affiche le genre et le statut (licencié ou non) des étudiants ayant respectivement la meilleure et la pire détente sèche.


Pire détente sèche      ( 16 cm ) : femme - 19 ans - non licenciée
Meilleure détente sèche ( 70 cm ) : homme - 18 ans - licencié
      

Bonus

Pensez à l'accord de l'adjectif licencié.
Correction
import pandas as pd

df = pd.read_excel('L2_D.xlsx')

id_min = df['D'].idxmin()

gender = df['Sexe'][id_min]
age = df['Age'][id_min]
if df['Licencié'][id_min] == 'oui':
    licensed = 'licencié'
else:
    licensed = 'non licencié'
if gender == 'femme':
    licensed += 'e'
    
print('Pire détente sèche      (', round(df['D'][id_min]), 'cm ) :', gender, '-', age, 'ans -', licensed)

id_max = df['D'].idxmax()

gender = df['Sexe'][id_max]
age = df['Age'][id_max]
if df['Licencié'][id_max] == 'oui':
    licensed = 'licencié'
else:
    licensed = 'non licencié'
if gender == 'femme':
    licensed += 'e'
    
print('Meilleure détente sèche (', round(df['D'][id_max]), 'cm ) :', gender, '-', age, 'ans -', licensed)

La ceinture d'Abalakov est un autre dispositif qui permet de mesurer la détente verticale. Le sujet porte une ceinture à la taille reliée à un fil enroulé. Après le saut, on mesure la longueur de fil déroulé. Le sujet effectue deux essais et on conserve le maximum comme estimation de la détente sèche D.

Exercice 5

Pour finir, écrivez un script sargent-vs-abalakov.py qui compare les moyennes et les écarts-types de la détente sèche mesurée à l'aide du test de Sargent et avec la ceinture d'Abalakov.


Test de Sargent     : 42.0 ± 10.3 cm
Ceinture d'Abalakov : 51.6 ± 11.7 cm
Correction
import pandas as pd

df = pd.read_excel('L2_D.xlsx')

for i in df.index:
    df.loc[i, 'Abalakov Max'] = max(df['Abalakov 1'][i], df['Abalakov 2'][i])

print('Test de Sargent     :', round(df['D'].mean(), 1), '±', round(df['D'].std(), 1), 'cm')
print('Ceinture d\'Abalakov :', round(df['Abalakov Max'].mean(), 1), '±', round(df['Abalakov Max'].std(), 1), 'cm')