Je vient de créer mon tout premier programme, c'est dans le cadre de l'école.
L'écriture est très probablement maladroite, je suis donc ouvert à toute modifications !
Mais j'ai crée ce topic pour avoir de l'aide sur les dernières lignes. Je cherche à faire quelques lignes qui demandent la statistique cherchée, donne la moyenne de celle-ci. j'ai pour l'instant utilisé la commande input() pour demander la statistique, mais je suis encore ouvert à toutes modifications. Je pense que vous comprendrez la ligne suivante. Pour le print(), j'aimerais afficher la stat demandée, puis sa moyenne mais je ne trouve pas le moyen de l'afficher car le input() est une variable et ne s'identifie pas à la l'élément de la liste demandé.
J'espère ne pas avoir été trop maladroit dans mes explications, et que c'est compréhensible.
Excusez aussi mon approche très scolaire.
Merci
Je joint le programme
#On joue avec des statistiques de basket-ball, et on prend pour exemple le joueur Donovan Mitchell
#Samuel MICHEL-CHAGNOT
#on crée une liste pour chaque match qui comprend dans un ordre determiné les données du joueur
import statistics #Pour plus tard
match1 = [39, 9, 9, 0, 12, 27, 6, 9, 2]
match2 = [21, 5, 5, 0, 6, 19, 5, 6, 2]
match3 =[37, 5, 5, 0, 9, 56, 13, 15, 5]
match4 = [30, 5, 4, 0, 11, 24, 3, 5, 2]
match5 = [37, 3, 4, 0, 15, 29, 1, 2, 3]
def stat(liste) :
"""on crée une fonction qui a pour but de suivre la formule de statistique trouvée sur wikipédia """
return liste[0] + liste[1] + liste[2] + liste[3] + (liste[4] - liste[5]) + (liste[6] - liste[7]) - liste[8]
match1.append(stat(match1)) #on ajoute à la liste match1 l'image de la fonction stat de match1
match2.append(stat(match2)) #on recommence ...
match3.append(stat(match3))
match4.append(stat(match4))
match5.append(stat(match5))
#On veut ensuite créer une liste des moyennes de chaques données
#on a besoin de créer une liste par donnée
PTS = [39, 21, 37, 30, 37]
REB = [9, 5, 5, 5, 3]
PAD = [9, 5, 5, 4, 4]
CTR = [0, 0, 0, 0, 0]
TR = [12, 6, 9, 11, 15]
TT = [27, 19, 56, 24, 29]
LFR = [6, 5, 13, 3, 1]
LFT = [9, 6, 15, 5, 2]
BP = [2, 2, 5, 2, 3]
STC = [37, 15, -7, 22, 26] #STC pour statistique classique
midlist = [statistics.mean(PTS), statistics.mean(REB), statistics.mean(PAD), statistics.mean(CTR), statistics.mean(TR), statistics.mean(TT), statistics.mean(LFR), statistics.mean(LFT), statistics.mean(BP), statistics.mean(STC)]
#On crée les moyennes de points par matchs de l'équipe etc
equipe = [116.4, 48.3, 23.7] #dans l'ordre distinct : points par matchs, rebonds par matchs, passes D par matchs
Donovan_mitchell = midlist + equipe
#print(Donovan_mitchell)
#On essaye ici de trouver une manière d'afficher rapidemment une statistique, et sa moyenne
word = input("statistique demandée") #On demande la statistique
if word in locals(): #On cherche si la statistique demandée est une variable connue dans le programme (commande locals())
print("La statistique",word,"à pour moyenne",midlist[],)
- Edité par SamChagnot 26 septembre 2021 à 13:33:40
Bonjour. C'est très maladroit en effet, mais c'est normal ! Il te manque un élément clé : le dictionnaire.
print("Sur la table il y a deux boîtes : ")
print("La boîte 'rouge'")
print("La boîte 'bleu'")
boites = {
"rouge": "rien",
"bleu": "un livre",
}
choix = input("Quelle boîte ouvrir ? : ")
try:
resultat = boites[choix]
except KeyError: # 'choix' n'existe pas dans boites
print(f"Il n'y a pas de boîte {choix} sur la table"); sys.exit()
print(f"A l'intérieur de cette boîte il y a : {resultat}")
Ta façon de faire avec 'locals()' c'est très bancal. 'locals()' c'est une fonction à oublier.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Je cherche à faire quelques lignes qui demandent la statistique cherchée, donne la moyenne de celle-ci. j'ai pour l'instant utilisé la commande input() pour demander la statistique
Si les différentes statistiques à afficher correspondent aux différents index de midlist, vous pourriez afficher un menu qui suggère de taper 0 pour PTS, 1 pour REB, ... et 99 pour sortir.
Comme illustré ici, quand on débute et qu'on utilise 'locals()' c'est qu'on a loupé quelque chose ou mal compris un truc. De manière générale même, quand est-ce que 'locals()' est préférable ? Dans les très rares cas où c'est utile, il n'y a aucun doute quant à cette utilité, et dans le reste des cas c'est une sorte de piège.
De manière générale même, quand est-ce que 'locals()' est préférable ? Dans les très rares cas où c'est utile, il n'y a aucun doute quant à cette utilité, et dans le reste des cas c'est une sorte de piège.
Il m'est très utile en complément de pdb pour connaître le contenu des variables à certains moment, je fais pp locals() et j'ai un pprint des variables dans ma fonction.
C'est surtout utilisé pour le debug.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
De manière générale même, quand est-ce que 'locals()' est préférable ? Dans les très rares cas où c'est utile, il n'y a aucun doute quant à cette utilité, et dans le reste des cas c'est une sorte de piège.
Il m'est très utile en complément de pdb pour connaître le contenu des variables à certains moment, je fais pp locals() et j'ai un pprint des variables dans ma fonction.
C'est surtout utilisé pour le debug.
Oui en effet. Par contre, faire reposer un algo sur 'locals()' c'est toujours évitable et à éviter.
Je me répète, ces données ne doivent pas entrées manuellement mais extraites des données des matchs, sinon ça sert à rien d'avoir les données des matchs, si on rentre directement les valeurs dans les stats (si on ajoute un nouveau match, on ne va pas refaire les calculs, pour les écrire manuellement dans le script ? )
L'idée c'est plutôt de faire (c'est une piste)
stats['PTS']=[match1[0], match2[0], ...]
stats['REB']=[match1[1], match2[1], ...]
choix=input("quelles stats?")
if choix in stats:
print(f"la stats {choix} a pour moyenne {statistics.mean(stats[choix])}")
Il faut que choix soit PTS, ou REB ou une autre clé du dictionnaire stats.
En fait, il faudrait reprendre presque depuis le début pour factoriser un peu tout ça, par exemple un dictionnaire les_stats['nom_de_la_stat']=position_de_la_stat_dans_tableau_match, comme ça, on peut l'utiliser pour récupérer la statistique dans le tableau de match, générer le tableau de stats, avec des boucles
Aide pour une "simple" commande
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
typage structurel ftw
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
typage structurel ftw
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
typage structurel ftw