Python [Résolu]

Signaler
Messages postés
32
Date d'inscription
samedi 2 mai 2020
Statut
Membre
Dernière intervention
14 mai 2020
-
Messages postés
56
Date d'inscription
lundi 1 juillet 2019
Statut
Membre
Dernière intervention
14 septembre 2020
-
Bonjour j'essaye de réppondre à ces question et j'éprouve un peu de difficulté est-ce que on pourrait m'aider svp:

On doit pouvoir saisir le nombre de compétitions du tournoi (valeur à vérifier). Il y a trois lanceurs de javelot (Julie, Claude, Arnold) qui concourent pour un tournoi de plusieurs compétitions.

Pour chacune des compétitions qui ont été disputées dans un tournoi, on doit pouvoir saisir le meilleur lancer (en mètres) de javelot de chacun des concurrents.

Pour chaque compétition, nous voulons faire afficher le numéro de la compétition, le nom et la distance du lancer du vainqueur, et afficher la moyenne des distances de lancers.


reprint("====================================competition numero 1====================================")

print("Bienvenu au tournoi de javelot : ",nom_Participant1)
saisirNbCompetition  = int(input("Saisissez votre nombre de competition  :"))

option = input("preferer vous effectuer une simulation et gerer aleatoirement les distances de lancers    (o/n) ?")

if option == "o":
    valeur_option = random.randint(0,120)
    print("Felicitation, vous avez atteint un lancers de  :  ",valeur_option,metres)

else :
    distanceRecord =(input("entrez la distance du lancers que vous avez obtenu   :"))

    print("Felicitation, vous avez atteint un lancers de  : ",distanceRecord,metres )
print("Bienvenu au tournoi de javelot : ",nom_Participant2)

22 réponses

Messages postés
56
Date d'inscription
lundi 1 juillet 2019
Statut
Membre
Dernière intervention
14 septembre 2020
5
Bonsoir,

Quand tu as du code, essaie de le mettre en forme, comme indiqué ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Concernant ton énoncé, essaie de suivre l'ordre qu'il indique.
Je te propose de procéder selon les étapes suivantes:

1. Crée d'abord la variable avec le nombre de compétitions
2. Crée une boucle qui itère sur chaque compétition
3. Pour une ième compétition, enregistre les meilleures saisies (ce peut être par simulation comme tu as fait, mais ce n'est pas demandé dans l'énoncé me semble-t-il) de chaque participant
4. Détermine, pour la ième compétition, qui est le vainqueur, et quel est sa distance obtenue.
5. A la fin de la boucle pour la ième compétition, affiche le numéro de la compétition, le nom et la distance du lancer du vainqueur, et affiche la moyenne des distances de lancers
Messages postés
32
Date d'inscription
samedi 2 mai 2020
Statut
Membre
Dernière intervention
14 mai 2020

oui merci mais mon probléme c'est au niveau du code, je suis un débutant et je sais pas comment coder tout cela , j'essaye mais je reçois toujours des messages d'erreurs et pour la simulation elle a été demander mais je ne l'ai pas mis ici,

voici mes déclarations

nom_Participant1 = "Julie" # Str, Le nom des participants sera sauvegarde dans cette variable
moyenneDistance = 0.0 # float, moyenne distantielle des lances
moyenneRecords = 0.0 # float, distance moyenne des record
saisirNbCompetition = 2 # int , On accumule le nombre de competition
distanceRecord = 0.0 # int , la distance du lancer de la personne qui détient le record s’il y en a
meilleurLancer = 0 # int, on determine le meilleur lancer en metre de chaque concurant
nbCompetition =0 #int, afficher le nombre de competition
numeroCompet= 0 # int , Afficher le numero de la competition
lanceEnmetre = 0.0 # float , On accumule les lances de tous les joueurs
nom_Participant2 = "arnold"
nom_Participant3 = "claude"
valeur_option= 0.0
import random
metres = "metres"


et comment on fais pour enregistrer les meilleurs saisis?
Messages postés
56
Date d'inscription
lundi 1 juillet 2019
Statut
Membre
Dernière intervention
14 septembre 2020
5
Je te donne la structure, à toi de compléter.
Si tu as des questions n'hésite pas.

# >>> étape 1
saisirNbCompetition = int(input("Saisissez votre nombre de competition :")) 

# >>> étape 2 : on crée la boucle pour itérer sur les compétitions
for i in range(saisirNbCompetition):
    #ici la competition n° i (attention i commence à 0, donc si tu veux indiquer que la première c'est la n°1, il faut indiquer i+1 dans le print)
    
    # >>> étape 3 : on sauvegarde les meilleurs lancers pour chaque participant
    
    # -------------
    # Participant 1
    # -------------
    
    #commence par alimenter la variable nom_Participant1, soit tu veux la saisir, soit tu sais que c'est "Julie", à toi de choisir
    nom_Participant1 = ____________
    
    print("Bienvenu au tournoi de javelot : ",nom_Participant1)

    #enregistre ensuite le meilleur lancer de ton participant, comme tu l'as fait pour saisirNbCompetition
    meilleurLancer_Participant1 = ___________________
    
    # -------------
    # Participant 2
    # -------------
    # de même tu renseignes les variables nom_Participant2 et meilleurLancer_Participant2
    
    # code à ajouter ici
    
    # -------------
    # Participant 3
    # -------------
    # de même tu renseignes les variables nom_Participant3 et meilleurLancer_Participant3

    # code à ajouter ici

    # ---------------------------------------------------
    # Recherche du meilleur lancer sur les 3 participants
    # ---------------------------------------------------
    # >>> étape 4 : ici tu compares meilleurLancer_Participant1, meilleurLancer_Participant2 et meilleurLancer_Participant3 pour déterminer quel est le meilleur

    # code à ajouter ici

    # >>> étape 5 : il te reste ensuite à afficher les bonnes informations

    # code à ajouter ici

Messages postés
32
Date d'inscription
samedi 2 mai 2020
Statut
Membre
Dernière intervention
14 mai 2020

gros merci je m'y met tout de suite
Messages postés
32
Date d'inscription
samedi 2 mai 2020
Statut
Membre
Dernière intervention
14 mai 2020

je dois également pourvoir arrondir tous les résultats obtenus à 2 décimal
comment faire pour arrondir une valeur qui se trouve à l'intérieur d'une variable?
Messages postés
56
Date d'inscription
lundi 1 juillet 2019
Statut
Membre
Dernière intervention
14 septembre 2020
5
La documentation suivante devrait pouvoir répondre à ta question : https://www.tutorialspoint.com/python/number_round.htm
Messages postés
32
Date d'inscription
samedi 2 mai 2020
Statut
Membre
Dernière intervention
14 mai 2020

---- Déclaration et Initialisations variables (var) et constantes (CTE) ------------------------------------------------

saisirNbCompetition = 2 
numero_Competition= 0  
nom_Participant1 = "Julie"
meilleurLancer_Participant1 = 0 
nom_Participant2 = "arnold"
meilleurLancer_Participant2 = 0 
nom_Participant3 = "claude"
meilleurLancerParticipant3 = 0 
moyenne_Distance = 0.0                                        
moyenne_Records = 0.0                                    
distance_Record = 0.0                                    
lanceEnmetre = 0.0                                                
metres = "metres"
option = ""
decimal_Result = 0
#Fonction------------------------------------------------------------------------------------------------------------------------------

import random
def  resultat():
          print ("Le meilleur lancer  est celui de   :  ")
#---------------------------------- Code ----------------------------------------------------------------------------
print("====================================competition numero 1====================================")
# -------------
# Participant 1
# -------------
print("Bienvenu au tournoi de javelot : ",nom_Participant1)

saisirNbCompetition  = int(input("Saisissez votre nombre de competition  :"))
for i in range(saisirNbCompetition):
    print (i+1)

option = input("preferer vous effectuer une simulation et gerer aleatoirement les distances de lancers    (o/n) ?")
if option == "o":
    meilleurLancer_Participant1 = random.randint(0,120)
    
    print("Felicitation, vous avez atteint un lancers de  :  ",meilleurLancer_Participant1,metres)

else :
    meilleurLancer_Participant1 =(input("entrez la distance du lancers que vous avez obtenu   :"))
    print("Felicitation, vous avez atteint un lancers de  : ",meilleurLancer_Participant1,metres )

# -------------
# Participant 2
# ------------- 
print("Bienvenu au tournoi de javelot : ",nom_Participant2)
saisirNbCompetition  = int(input("Saisissez votre nombre de competition  :"))
print(i+2)
meilleurLancer_Participant2 = random.randint(0,120)
print("Felicitation, vous avez atteint un lancers de  :  ",meilleurLancer_Participant2,metres)
# -------------
# Participant 3
# -------------
print("Bienvenu au tournoi de javelot : ",nom_Participant3)
saisirNbCompetition  = int(input("Saisissez votre nombre de competition  :"))
meilleurLancer_Participant3 = random.randint(0,120)
print("Felicitation, vous avez atteint un lancers de  :  ",meilleurLancer_Participant3,metres)
# ---------------------------------------------------
# Recherche du meilleur lancer sur les 3 participants
# ---------------------------------------------------
if meilleurLancer_Participant1 > meilleurLancer_Participant2:
    resultat(nom_Participant1)
elif  (meilleurLancer_Participant1 < meilleurLancer_Participant3) :
        resultat( nom_Participant3)
else :(meilleurLancer_Participant2 < meilleurLancer_Participant3)
resultat(nom_Participant3)

Messages postés
32
Date d'inscription
samedi 2 mai 2020
Statut
Membre
Dernière intervention
14 mai 2020

ça donne ça pour le moment je sais pas si je suis toujours sur la bonne direction
Messages postés
56
Date d'inscription
lundi 1 juillet 2019
Statut
Membre
Dernière intervention
14 septembre 2020
5
Bonjour,

J'ai 2 remarques :

1. Le code tel que tu l'as affiché est difficile à lire (d'autant plus qu'on ne voit pas les indentations). Donc peux-tu le mettre en forme, comme indiqué ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code.
Ce sera plus facile à lire pour toi et pour les personnes qui t'aident.

2. N'aie pas peur de tester de ton côté. C'est en faisant des erreurs que l'on apprend.
Déjà quand tu exécutes ton programme, arrives-tu à voir tes
print
à la console ? Si non, pourquoi ?
As-tu des erreurs ? Si oui, comment peux-tu les corriger ?
Messages postés
32
Date d'inscription
samedi 2 mai 2020
Statut
Membre
Dernière intervention
14 mai 2020

bonjour,

Qu'est-ce que la mise en forme? un model ou un programme ou je copie mon code ?
Messages postés
56
Date d'inscription
lundi 1 juillet 2019
Statut
Membre
Dernière intervention
14 septembre 2020
5
Tu copies ton code à partir de ton éditeur (avec les indentations). Tu le colles ici, ensuite tu le sélectionnes en entier et puis tu sélectionnes les balises de code python.
Mais tout est précisé dans le lien que j'ai indiqué.
Messages postés
32
Date d'inscription
samedi 2 mai 2020
Statut
Membre
Dernière intervention
14 mai 2020

est-ce qu'il à un moyen de faire une boucle pour que je puisse refaire les mêmes étapes pour un deuxième lancers
ou je dois récrire le même code pour un deuxième lancers?

if option == "o":
premierLancer_Participant1 = random.randint(0,120)
print("Felicitation, votre premier lancer est de : ",premierLancer_Participant1,metres)
somme_Lancers += premierLancer_Participant1
cpt = cpt + 1
Messages postés
56
Date d'inscription
lundi 1 juillet 2019
Statut
Membre
Dernière intervention
14 septembre 2020
5
Oui tu peux utiliser une boucle. Et ensuite tu peux parcourir ce tableau, par exemple de cette façon, pour une compétition du participant1 :
#somme_Lancers à initialiser à 0
for num_lancer in range(1,nombre_de_lancers+1):
	if option == "o":
		lancer_Participant1 = random.randint(0,120)
		print("Felicitation, votre lancer n°",num_lancer ,"est de : ",lancer_Participant1,"metres")
		somme_Lancers += lancer_Participant1
Messages postés
32
Date d'inscription
samedi 2 mai 2020
Statut
Membre
Dernière intervention
14 mai 2020

je n'arrive pas à faire une boucle, vous voyez ce code est pour 1 participant, ça marche quand même?
et je dois reproduire ça 2 autres fois

# Participant 1

print("Bienvenu au tournoi de javelot : ",nom_Participant1)
saisirNbCompetition = int(input("Saisissez votre nombre de competition :"))
for i in range(saisirNbCompetition):
print (i+1)
option = input("preferer vous effectuer une simulation et gerer aleatoirement les distances de lancers (o/n) ?")
if option == "o":
premierLancer_Participant1 = random.randint(0,120)
deuxiemeLancer_Participant1 = random.randint(0,120)
cpt = cpt + 1
else :
premierLancer_Participant1 =(input("entrez la distance du lancers que vous avez obtenu :"))
deuxiemeLancer_Participant1 =(input("entrez la distance du lancers que vous avez obtenu :"))
cpt = cpt + 1
Messages postés
56
Date d'inscription
lundi 1 juillet 2019
Statut
Membre
Dernière intervention
14 septembre 2020
5
Bonjour,
si tu veux éviter de répéter ce code pour chaque participant, tu peux faire une boucle
for nom_participant in ["Julie", "Claude", "Arnold"]:

et dans la boucle tu remplaces
nom_Participant1
par
nom_participant
.

Je te donne des indications mais c'est à toi de tester si ça fonctionne. Utilise autant de
print
que nécessaire pour déboguer et comprendre le fonctionnement du code que tu écris.
Messages postés
32
Date d'inscription
samedi 2 mai 2020
Statut
Membre
Dernière intervention
14 mai 2020

en faisant ça mes données sont tous sauvegarder dans une seule variable? alors quand je vais devoir calculer la moyenne ça ne fonctionnera pas ?
Messages postés
32
Date d'inscription
samedi 2 mai 2020
Statut
Membre
Dernière intervention
14 mai 2020

le code fonctionne, ma boucle fonctionne, mais si je veux désigner un vainqueur, mes données sont tous stocker dans une seule variable? est-ce que c'est toujours possible de le faire ?
Messages postés
56
Date d'inscription
lundi 1 juillet 2019
Statut
Membre
Dernière intervention
14 septembre 2020
5 >
Messages postés
32
Date d'inscription
samedi 2 mai 2020
Statut
Membre
Dernière intervention
14 mai 2020

Pour avoir la moyenne des lancers pour une compétition, tu initialises ta variable somme_Lancers au début de la boucle :
for i in range(saisirNbCompetition):
    somme_Lancers = 0 #on l'initialise ici comme ça à chaque début de nouvelle compétition, on remet les scores à 0
    
    # code à ajouter
    
    #à chaque nouveau lancer :
    somme_Lancers += la_valeur_du_lancer_obtenue
    
    # code à ajouter
    
    # à la fin de la boucle, tu calcules la moyenne en utilisant somme_Lancers et la bonne formule
Messages postés
32
Date d'inscription
samedi 2 mai 2020
Statut
Membre
Dernière intervention
14 mai 2020

merci !

je vais pouvoir également faire ressortir le vainqueur ? étant donné qu'on réinitialise toujours à zéro les valeurs et qu'on à qu'une variable de stockage pour les lancers des 3 participants pour leur deux lancers?
Messages postés
56
Date d'inscription
lundi 1 juillet 2019
Statut
Membre
Dernière intervention
14 septembre 2020
5
Ce n'est que la somme des lancers qu'on remet à 0, mais c'est vrai qu'il faut stocker les meilleurs lancers de chaque participant pour pouvoir les comparer à la fin de chaque compétition.
Messages postés
32
Date d'inscription
samedi 2 mai 2020
Statut
Membre
Dernière intervention
14 mai 2020

c'est pour cela que j'ai crée ces trois variables

# premierLancer_Participant = 0
# deuxiemeLancer_participant1 = 0
# meilleurLancer_Participant1 = 0


et que j'ai répété 3 fois ce code pour chaque participant :
et je me suis également demander si je pouvais utiliser l'appel de fonction pour mes affichages qui se répètent ce que j'ai réussi à faire, mais j'ai de la difficulté à utiliser l'appel de fonction ""def " pour par exemple "" premierLancer_Participant1 = random.randint(0,120)"""

print ("Bienvenu au tournoi de javelot : ",nom_Participant1)
option = input("Vous avez deux lancers, preferer vous effectuer une simulation \n et gerer aleatoirement les distances de lancers (o/n) ? :")

if option == "o":
premierLancer_Participant1 = random.randint(0,120)
print("Felicitation, vous avez atteint un premier lancers de :
",premierLancer_Participant1,metres)

print("Veuillez faire votre deuxieme lancer")
deuxiemeLancer_Participant1 = random.randint(0,120)
somme_Lancer += meilleurLancer_Participant1
print("Felicitation, vous avez atteint un deuxieme lancers de :
",deuxiemeLancer_Participant1,metres)
cpt = cpt + 1
else :
premierLancer_Participant1 =(input("entrez la distance du premier lancer :"))
print("Felicitation, vous avez atteint un premeir lancers de :
",premierLancer_Participant1,metres)
print("Veuillez faire votre deuxieme lancer")
somme_Lancer += deuxiemeLancer_Participant1
Messages postés
56
Date d'inscription
lundi 1 juillet 2019
Statut
Membre
Dernière intervention
14 septembre 2020
5
La fonction
resultat
que tu as définie fait un simple
print
sans afficher de variable. Donc si tu veux l'utiliser, tu indiques simplement
resultat()
et à la ligne suivante tu fais un
print
de la variable qui correspond.
A moins que tu parlais de créer une fonction qui remplace
random.randint(0,120)
? Dans ce cas, un
return random.randint(0,120)
suffit.

Je crois que là je perds un peu le fil de ce que tu veux faire.
Repartons déjà de la partie A de ton exercice (donc on met de côté la simulation)
Et avec un exemple, pour être sûr de vouloir le même résultat :

compétition 1
lancers de Julie : 0 - 11 => on demande au programme de saisir le meilleur lancer (on tape 11)
lancers de Claude : 12 - 14 => on demande au programme de saisir le meilleur lancer (on tape 14)
lancers de Arnold : 15 - 13 => on demande au programme de saisir le meilleur lancer (on tape 15)
=> le programme affiche : le numéro de la compétition (1), le nom (Arnold) et la distance du lancer du vainqueur (15), et afficher la moyenne des distances de lancers(=> ici, j'imagine qu'on parle de moyenne des meilleurs lancers, ce qui donnerait (11+14+15)/3=13.33.

compétition 2
lancers de Julie : 5 - 10 => on demande au programme de saisir le meilleur lancer (on tape 10)
lancers de Claude : 12 - 11 => on demande au programme de saisir le meilleur lancer (on tape 12)
lancers de Arnold : 11 - 9 => on demande au programme de saisir le meilleur lancer (on tape 11)
=> le programme affiche : le numéro de la compétition (2), le nom (Claude) et la distance du lancer du vainqueur (12), et afficher la moyenne des distances de lancers( (10+11+12)/3=11 ).

Est-ce que ton programme te donne les mêmes résultats avec ces exemples ?
Messages postés
32
Date d'inscription
samedi 2 mai 2020
Statut
Membre
Dernière intervention
14 mai 2020

peut-être que je me suis trompé? je dois pas additionner tous les lancers diviser par 6? étant donné qu'ils ont 2 lancers chacun et qu'on veux la moyenne des lancers par compétition?
Messages postés
32
Date d'inscription
samedi 2 mai 2020
Statut
Membre
Dernière intervention
14 mai 2020

0 + 11 + 12 + 14 + 15 + 13 / 6 = 10.83 ?
Messages postés
32
Date d'inscription
samedi 2 mai 2020
Statut
Membre
Dernière intervention
14 mai 2020

Pour chacune des compétitions qui ont été disputées dans un tournoi, on doit pouvoir saisir le meilleur lancer (en mètres) de javelot de chacun des concurrents.

Pour chaque compétition, nous voulons faire afficher le numéro de la compétition, le nom et la distance du lancer du vainqueur, et afficher la moyenne des distances de lancers.
Messages postés
56
Date d'inscription
lundi 1 juillet 2019
Statut
Membre
Dernière intervention
14 septembre 2020
5
Je reconnais que l'énoncé de la partie A n'est pas clair.
Il demande de saisir le meilleur lancer de chaque participant pour chaque compétition.
Quand il demande la moyenne des lancers sur une compétition, je le comprends comme tu l'as fait, sur tous les lancers d'une compétition.
Mais sachant qu'il demande seulement de saisir les meilleurs lancers, j'imaginais qu'on n'avait que ces données à moyenner (sans avoir à saisir les autres lancers).
Dans le doute, tu peux poser la question à la personne qui t'a fourni l'énoncé.
Messages postés
32
Date d'inscription
samedi 2 mai 2020
Statut
Membre
Dernière intervention
14 mai 2020

sinon le programme marche, j'arrive à 10,83
Messages postés
32
Date d'inscription
samedi 2 mai 2020
Statut
Membre
Dernière intervention
14 mai 2020

""une fonction qui remplace random.randint(0,120) ? Dans ce cas, un return random.randint(0,120) suffit.""

oui pour le retour de fonction c'est cela que je veux,
Messages postés
32
Date d'inscription
samedi 2 mai 2020
Statut
Membre
Dernière intervention
14 mai 2020

bonjour

Une petite idée comment je pourrais faire ce code?

On veut rajouter une fonction verifiePlageDeValeur pour valider la saisie de distance des lancers ).

• La fonction demande à l’utilisateur de saisir la distance de lancer d’un concurrent tant qu’elle n’est pas comprise entre les valeurs d’une distance minimale et maximale inclues.

• La fonction prend le nom du concurrent en paramètre ainsi que les bornes de la plage autorisée et retourne la valeur valide.

• On appelera la fonction avec les bornes de la plage de valeur [0,120]
Messages postés
56
Date d'inscription
lundi 1 juillet 2019
Statut
Membre
Dernière intervention
14 septembre 2020
5
  • La fonction demande à l’utilisateur de saisir la distance de lancer d’un concurrent tant qu’elle n’est pas comprise entre les valeurs d’une distance minimale et maximale inclues.

Tout est écrit : dans ta nouvelle fonction
verifiePlageDeValeur
tu fais une boucle
while
qui vérifie que la distance de lancer que tu viens de saisir n’est pas comprise entre les valeurs d’une distance minimale et maximale inclues. Sous cette condition, tu redemandes la saisie.
Quand tu sors de la boucle, cela voudra dire que la valeur saisie est (enfin) bonne. Il te reste donc à l'envoyer en sortie de ta fonction
verifiePlageDeValeur
.