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.

87 lines
3.4 KiB

### un fichier python doit avoir une extension en .py
### un nom de fonction ou de variable ne doit pas comporter d'espace
### une documentation de fonction doit être entre """ """ et pas *** ***
### vous n'avez pas testé vos fonctions
### structure for ligne in pas if
### et j'en passe ... des approximations pratiquement à toutes les lignes 4 erreurs juste dans la première fonction
### j'ai corrigé 17 lignes pour faire fonctionner le programme
### le pourcentage de réussite de fonctionne pas
### pour le calcul totatl des points il faut prendre en compte les lancers francs
### note : 7
def charger_donnees (fichiers): #il ne faut pas d'espace dans le nom de la fonction
#***Charge les donnees depuis un fichier texte et retourne une liste de tuples.***
donnees = []
with open (fichiers, "r")as f: #il faut choisir soit fichiers soit fichier
for ligne in f: # in pas if
elements = ligne.strip().split() #line ou ligne?
if len (elements) == 4:
joueur, action, x,y = elements
donnees.append((joueur, action, int(x), int(y))) # c'est un point pas une virgule ...
return donnees
def reussite(donnees, joueur, action):
#***Retourne le nombre de tentatives et reussites pour un joueur et une action donnees.***
tentatives = 0
reussites = 0
for j, a, _, _ in donnees: # il faut mettre : et un espace avant in
if j == joueur and action in a:
tentatives += 1
if a == action + "reussi":
reussites += 1
return tentatives, reussites
def points (x, y):
#***Determine le nombre de points en fonction de la position du tir.***
if (x - 0) ** 2+ ( y- 300) ** 2<= 150 ** 2 or (x - 1000) ** 2 + (y - 300) ** 2 <= 150** 2:
return 2
return 3
def totalPoints(donnees, joueur):
#***Calcule le total de points marqués par un joueur***
total = 0
for j,a,x,y in donnees:
if j == joueur and a == "tir-reussi":
total += points (x,y)
return total
def rebondsPasses( donnees, joueur): # il faut mettre :
#***Retoune le nombre de rebonds et de passes d un joueur.***
rebonds = 0
passes = 0
for j, a, _, _ in donnees:
if j == joueur:
if"rebonds" in a :
rebonds += 1
elif a == "passe":
passes += 1
return rebonds, passes
def manque (donnees, joueur):
#***Retourne le nombre d actions manquees par un joueur.***
tirs_manques = 0
pertes = 0
for j, a, _, _ in donnees:
if j == joueur:
if a == "tir-manque":
tir_manques += 1
elif a == "perteBalle":
pertes += 1
return tirs_manques + pertes
def afficheStats(donnees, joueur):
#***Affiche les statistiques completes d un joueur.***
points_marques = totalPoints(donnees, joueur)
tentatives, reussites = reussite( donnees, joueur, "tir")
rebonds, passes = rebondsPasses(donnees,joueur)
poucentage = (reussites / tentatives * 100) if tentatives > 0 else 0
print("Statistiques de", joueur)
print("-Points marques:", points_marques)
print("-Reussite au tir:", round(poucentage, 2), "%") #pourcentage ou poucentage ?
print("-Rebonds:", rebonds, "passes", passes)
#Chargements des donnees et tests
fichier_stats = "stats.txt" # ce n'est pas le fichier qui était donné, stats.txt pour le bon pas stats.odf
donnees = charger_donnees(fichier_stats)
afficheStats(donnees, "J1")