Code du projet NSI sur l'analyse automatique des tirs de basket.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

88 lines
3.3 KiB

from math import sqrt
def reussite (joueur,action):
"""Prend en valeur un nom de joueur et une action et donne
(<actions_prises_par_le_joueur>,<actions_reussies_de_ce_joueur>)"""
actions_reussies = 0
actions_prises = 0
with open("stats.txt",'r') as fichier_stat:
for ligne in fichier_stat:
ligne_separe = ligne.split(" ")
if ligne_separe[0] == joueur and action in ligne_separe[1]:
actions_prises += 1
if 'reussi' in ligne_separe[1]:
actions_reussies += 1
return actions_prises,actions_reussies
def points (x,y):
"""la fonction doit prendre en paramètres x et y
les coords du point d'action et doit renvoyer 2 ou 3 en fonction du point de tir"""
if x - 500<0:
distance = sqrt((y-300)**2+x**2)
else:
distance = sqrt((y-300)**2+(x-00)**2)
if distance<=250:
return 2
else :
return 3
def totalPoints(joueur):
"""Utilise la fonction 'points()' pour calculer les points
d'un joueur donné."""
totpoints=0
x=0
y=0
with open('stats.txt','r') as fichier_stat:
for ligne in fichier_stat:
ligne_separe = ligne.split(" ")
if ligne_separe[0]==joueur and ligne_separe[1]== 'tir-reussi':
ligne_separe[2]= x
ligne_separe[3]= y
totpoints=totpoints+points(x,y)
return totpoints
def rebondsPasses(joueur):
"""Prend en paramètre un nom de joueur et donne (<nombre_de_rebonds>,
<nombre_de_passes>)"""
nombre_de_rebonds = 0
nombre_de_passes = 0
with open('stats.txt','r') as fichier_stat:
for ligne in fichier_stat:
ligne_separe = ligne.split(" ")
if ligne_separe[0] == joueur:
if 'rebond' in ligne_separe[1]:
nombre_de_rebonds += 1
elif 'passe' in ligne_separe[1]:
nombre_de_passes += 1
return nombre_de_rebonds,nombre_de_passes
def manque(joueur):
"""Prend un nom de joueur et retourne le nombre d'actions manquées et
de pertes de balle par le joueur."""
nombre_de_rates_et_pertes = 0
with open('stats.txt','r') as fichier_stat:
for ligne in fichier_stat:
ligne_separe = ligne.split(" ")
if ligne_separe[0] == joueur:
if 'manque' in ligne_separe[1] or 'perteBalle' in ligne_separe[1]:
nombre_de_rates_et_pertes += 1
return nombre_de_rates_et_pertes
def afficheStats(joueur):
"""diff stats points marqués, pourcentage de reussite etc"""
pourcent_reussite = round(reussite(joueur,'tir')[1]/reussite(joueur,'tir')[0]*100,1)
print("Le joueur", joueur, "a réussi", pourcent_reussite, "% de ses tirs, a marqué",
totalPoints(joueur), "points, a fait", rebondsPasses(joueur)[0], "rebonds,",
rebondsPasses(joueur)[1], "passes et manqué", manque(joueur), "tirs")
#TESTS :
print('Le joueur 1 a tiré et réussi', reussite('J1','tir'))
print('le joueur 1 a fait ce nombre de rebonds et passes',rebondsPasses('J1'))
print('Le joueur 1 a raté et perdu la balle',manque('J1'),'fois')
print(points(500,300))#censé etre 3 points
print(points(150,300))#censé etre 2 points
print(points(900,100))#censé etre 2 points
print(totalPoints('J1'))