Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
465 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  [Python] Aide pour un programme de débutant

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Python] Aide pour un programme de débutant

n°2105490
simaxx93
Posté le 09-10-2011 à 22:57:59  profilanswer
 

Bonjour à tous,
 
Je suis étudiant en 1ère année en informatique et je dois rendre un projet de programmation (Python)
Je suis bloqué sur ce projet, s'il y a des gens qui pourrait programmer ce projet, ce serait vraiment merveilleux. Apparemment il n'est pas long à faire (pour les connaisseurs)
 
Consignes du projet :  
 
Le match de Tennis
 
À l’occasion du championnat de tennis interuniversitaire, les Autorités de l'université ont demandé
au Département d’Informatique de leur fournir une application qui peut être utilisée par
l’arbitre pendant un match afin de compter les points.
 
Un match de tennis se gagne en remportant un maximum de points, de jeux, puis de sets.
Le tournoi n’organise que des matchs où il suffit de gagner un set pour remporter la partie. Pour
gagner un set, il faut être le premier à marquer six jeux avec au moins deux jeux d’écart ; dans le
cas contraire, le set se poursuit. Des scores possibles pour remporter un set sont donc, entre autres :
6-0, 6-1, 6-2, 6-3, 6-4 et 7-5. Un set se remporte donc en gagnant un certain nombre de jeux. Afin
de remporter un jeu, il est nécessaire de marquer au moins quatre points. Lors d’un jeu, voici la
manière dont les points sont comptés :
 
- zéro : pour aucun point marqué dans le jeu ;
- quinze : pour un point marqué ;
- trente : pour deux points marqués ;
- quarante : pour trois points marqués.
 
Lorsque les deux joueurs ont marqué trois points au sein d’un même jeu (donc à 40-40), il y a
égalité. Celui qui marque le point suivant obtient un « avantage ». Pour remporter le jeu, un joueur
qui a l’avantage doit marquer un autre point. Si c’est le joueur qui n’a pas l’avantage qui marque
le point suivant, on revient à l’égalité 40-40, et ainsi de suite jusqu’à ce que l’un des deux joueurs
remporte le jeu.
 
Nous vous demandons de créer un fichier projet1.py qui devra comprendre les éléments
suivants :
 
1. Une fonction augmenter(points) qui prend en paramètre le nombre de points d’un joueur
(0, 15, 30 ou 40) et qui renvoie le nombre de points qu’aurait ce joueur en marquant un
point. Si le joueur obtient un « avantage », la fonction devra renvoyer la chaîne de caractères
’A’.
2. Une fonction jouer_jeu() sans paramètre qui simule un jeu de tennis et qui renvoie un entier
1 ou 2 respectivement dans le cas où le joueur 1 ou 2 a gagné le jeu. Cette fonction devra
utiliser la fonction augmenter() précédente. Elle devra donc aussi demander à l’utilisateur
quel joueur vient de marquer le dernier point, ce jusqu’à ce que le jeu soit terminé.
3. Une fonction fin_match(jeux1,jeux2) à deux paramètres (respectivement le nombre de
jeux marqués par le joueur 1 et le joueur 2) qui renvoie True si le match est terminé, False
sinon.
4. Un morceau de code principal qui, à l’aide des fonctions jouer_jeu() et fin_match()
simule un match de tennis à un set tel qu’expliqué précédemment et qui affiche quel joueur
remporte la partie.
 
 
Votre projet doit pouvoir s’exécuter dans un terminal en tapant « python projet1.py ». Un
exemple d’exécution de votre projet serait ainsi le suivant :
 
Score du jeu courant: 0 - 0
Qui a marqué ? 1
Score du jeu courant: 15 - 0
Qui a marqué ? 2
Score du jeu courant: 15 - 15
Qui a marqué ? 1
Score du jeu courant: 30 - 15
Qui a marqué ? 1
Score du jeu courant: 40 - 15
Qui a marqué ? 1
JOUEUR 1 GAGNE LE JEU
Score du set courant: 1 - 0
Score du jeu courant: 0 - 0
Qui a marqué ? 2
...
Qui a marqué ? 1
Score du jeu courant: 40 - 30
Qui a marqué ? 2
Score du jeu courant: 40 - 40
Qui a marqué ? 1
Score du jeu courant: A - 40
Qui a marqué ? 2
Score du jeu courant: 40 - 40
Qui a marqué ? 1
Score du jeu courant: A - 40
Qui a marqué ? 1
JOUEUR 1 GAGNE LE JEU
Score du set courant: 6 - 4
JOUEUR 1 GAGNE LE MATCH
 
 
 
D'avance merci pour votre aide..

mood
Publicité
Posté le 09-10-2011 à 22:57:59  profilanswer
 

n°2106217
carrion cr​ow
Immortal until my death
Posté le 13-10-2011 à 17:14:02  profilanswer
 

Tu veux qu'on te fasse l'exo... tu veux aussi 100 balles et un mars  :o  
 
Tu as de la chance, je suis aussi débutant et des exos pour m'exercer, ça m'intéresse. J'ai donc pris 3 grosses heures pour le faire (oui, c'est très long et j'hésite à me pendre pour stupidité  :D , mais ça faisait mini un mois que je n'avais pas regardé un bout de python...)
Je n'ai pas rencontré de grosses difficultés, juste des trucs nazes, style == à la place de =, ce genre de truc.
Le contrôle de la saisie utilisateur m'a fait chercher un moment dans mes exos et docs, pour finalement être solutionné par google (try: except ValueError:)
Les conditions de victoire et d'avantage m'ont fait écrire des if, elif, and, or pas très élégants.
Je comptais faire un tuple pour les points affichés et gérer les points dans le code avec son index, mais ton exposé impose que augmenter(points) prenne en paramètre (0, 15, 30, 40)
La fonction la plus "chiante" est jouer_jeu()
 
Alors, je ne vais pas te mettre le code mais te laisser chercher et me dire où tu bloques. Poste ce que tu as fais, je posterai après.


---------------
Des piafs en photo
n°2138945
clairounet​te92
Posté le 25-04-2012 à 11:49:24  profilanswer
 

bonjour,  
 
j'ai le même sujet, et j'ai du mal à organiser la facon de penser. est ce que tu pourrais me dire quel a été ton découpage du programme en modules stp?  
 
tu vois je réfléchis! :)

n°2139531
carrion cr​ow
Immortal until my death
Posté le 27-04-2012 à 17:45:43  profilanswer
 

Salut,
 
Ça faisait un moment que je n'étais pas venu voir dans la cat python et il y a un post ! et en plus j'ai retrouvé l'exo !!
 
J'avais fait trois fonctions : augmenter(point) ; jouer_jeu() ; et fin_match(jeu1, jeu2).
Après, je ne me souvient plus du truc et ça doit sûrement pouvoir se faire mieux autrement.


---------------
Des piafs en photo
n°2223515
bosseur
Posté le 30-03-2014 à 17:58:07  profilanswer
 

dsl de te repondre avec toutes ses années de retard mais tient voila ce que j'ai fait en ISN:
def jeu (score):
 while score.count(1)>score.count(2):
  break
  print (score.count(1) , score.count(2))
  print ('vainqueur joueur 1')
 while score.count(2)>score.count(1):
  break
  (score.count(1) , score.count(2))
  print ('vainqueur joueur 2')
 if score.count(1)==score.count(2):
  print (score.count(1) , score.count(2))
  print('jeu en cours')
 elif score.count(1)-score.count(2)==1:
  print (score.count(1) , score.count(2))
  print ('jeu en cours')
 elif score.count(2)-score.count(1)==1:
  print (score.count(1) , score.count(2))
  print ('jeu en cours')
 elif score.count(1)<4 and score.count(2)<4:
  print (score.count(1) , score.count(2))
  print ('jeu en cours')
 elif score.count(1)==4:
  print(4, 0)
  print('vainqueur joueur 1')
 elif score.count(2)==4:
  print(0, 4)
  print('vainqueur joueur 2')
 elif score.count(1)-score.count(2)==2:
  print (score.count(1), score.count(2))
  print ('vainqueur joueur 1')
 elif score.count(2)-score.count(1)==2:
  print (score.count(1), score.count(2))
  print ('vainqueur joueur 2')
 else:
  print('erreur de score')
ou:
def tennis ():
 print'les joueurs sont 1 et 2'
 score=[0,15, 30, 40,'Jeu']
 ex=[40, 'Adv','Jeu']
 score1=score[0]
 score2=score[0]
 j1=0
 j2=0
 while score1!='Jeu' and score2!='Jeu': #boucle qui tourne tant que personne n'atteint le jeu
  vainqueur=input('Qui a marqué ? : ')
  if score1==40 and score2==40:
   if vainqueur=='1':
    score1='Adv'
   else:
    score2='Adv'
  elif score1==40 and score2=='Adv':
   if vainqueur=='2':
    score1=40
    score2='Jeu'
   elif vainqueur=='1':
    score1=40
    score2=40
  elif score1=='Adv' and score2==40:
   if vainqueur=='1':
    score1='Jeu'
    score2=40
   elif vainqueur=='2':
    score1=40
    score2=40
  elif vainqueur=='1':#on s'intéresse au cas ou le joueur1 gagne le point
   j1=j1+1
   score1=score[j1]
  else:
   j2=j2+1
   score2=score[j2]
  print(score1, score2)

n°2223518
fred1599
Posté le 30-03-2014 à 19:50:35  profilanswer
 

Finalement, ne rien déterrer aurait été préférable, car tu ne présentes strictement rien en ce qui concerne l'objet score...
 
Du coup sans cet objet le code est inutile et incompréhensible. Qui puis est c'est illisible, avec ou sans balises code !
 
Bref, pour un élève ISN, c'est décevant, car on pourrait penser qu'à ce niveau vous avez tout de même appris suffisamment pour comprendre le minimum syndical dans l'apprentissage d'un langage de programmation.
 
Je suis dur, désolé, mais bien réaliste, malheureusement.
 
Qui puis-est le cahier des charges, est totalement en contradiction avec cette dernière solution, ce qui rend la réponse HS!!!


Message édité par fred1599 le 30-03-2014 à 19:52:39
n°2224058
bosseur
Posté le 03-04-2014 à 18:10:11  profilanswer
 

Cependant le programme fonctionne je ne comprend pas la reproche...

n°2224059
fred1599
Posté le 03-04-2014 à 18:43:13  profilanswer
 

score est une liste, j'ai lu assez rapidement, croyant que tu avais des notions de POO...
 
Mea culpa, cependant tu crées une fonction pour faire tout le boulot, en gros une fonction, une tâche, c'est un peu le but de la modularité en programmation informatique...
 
Ton code est répétitif, exemple
 

Code :
  1. print (score.count(1) , score.count(2))


 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  [Python] Aide pour un programme de débutant

 

Sujets relatifs
Besoin d'aide dans mon codeaide
[Aide] trie d'un tableau par dateBesoin d'aide sur code
[AIDE] Mise en ligne site web JAVA-JSPEtudiante ayant besoin d'aide JEE !!!!!!
besoin d aide macro ExcelAide sur memcmp
Dessiner graphe via un programme C++faire un programme qui s'execute cotée serveur
Plus de sujets relatifs à : [Python] Aide pour un programme de débutant


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR