Partage
  • Partager sur Facebook
  • Partager sur Twitter

Aide pourprogrammer le jeu à gratter

    28 mars 2015 à 10:40:45

    Bonjour à tous,

    Je débute en informatique (formation SIO option réseaux) et je travaille sur 2 livres pour la programmation : le manuel Foucher pour les maths et l'algo, le manuel de Vincent Le Goff (acheté ici) pour Python.

    Dans le Foucher, il y a un jeu que je n'arrive pas à programmer complètement.

    Le jeu à gratter est un jeu de hasard. On fait Entrée 5  fois et on obtient à chaque fois un nombre entre 1 et 5. Les 5 résultats s'additionnent.

    Si le nombre est inférieur ou égal à 2, on gagne 2 euros

    Si la somme totale est paire, on gagne 1 euro.

    Jusque là j'ai réussi.

    Si le même nombre revient 3 fois ou plus, on gagne 5 euros. Je ne sais pas comment programmer cette condition. Auriez-vous une idée ?

    Merci beaucoup.

    Pour info, voici le jeu en Python :

    from random import*
    E=[3,5,1,4,2] # Ensemble
    print(E)
    S=0
    i=0
    G=0

    while i<len(E): #len(E) = taille de E l'Ensemble
        n=input("\nPour gratter faites Entrée :")
        n=randint(1,5)
        print("Vous avez gratté le nombre ",n)
       
        if n<=2:
            G=G+2
            print("YESSS !! Le nombre est inférieur ou égal à 2,\ndonc vous gagnez",G," euros.")
        S= n+S
        print("La somme des nombres est : ",S,)
        i+=1
       
       


    if S%2==0:
        G=G+1
        print("Somme paire en plus ! Vous gagnez 1 euro de plus.")
    print("\nTotal de vos gains : ",G, "euros.")   

    Je vous remercie d'avance !

    • Partager sur Facebook
    • Partager sur Twitter
      28 mars 2015 à 12:17:19

      Tu dois commencer avec une liste vide. Tu vas ajouter les chiffres grattés à cette liste avec la méthode append. Ta boucle ne devrait pas être un while mais un for i in range(5): puisque tu connais le nombre d'itération à faire.

      Après ta boucle tu peux calculer la somme de ta liste avec la fonction sum. Et tu pourrais aussi vérifier s'il y a répétition des éléments dans cette liste.

      PS: sur le forum, met ton code dans les balises de code (bouton </>).

      -
      Edité par Dan737 28 mars 2015 à 12:17:54

      • Partager sur Facebook
      • Partager sur Twitter
        28 mars 2015 à 12:40:15

        Merci beaucoup. J'essaie et je te tiens au courant.

        A très bientôt.

        • Partager sur Facebook
        • Partager sur Twitter
          28 mars 2015 à 13:04:17

          Comment je fais pour vérifier s'il y a répétition des éléments ? Je ne connais pas encore la fonction sum et je ne vois pas comment faire... Merci !

          Sinon, pour le reste :

          < from random import*
          T=[]
          S=0
          G=0
          i=0

          for i in range(5) :
              n=input("\nPour gratter faites Entrée :")
              n=randint(1,5)
              T.append(n)
              print("Vous avez gratté le nombre ",n)
             
              if n<=2:
                  G=G+2
                  print("YESSS !! Le nombre est inférieur ou égal à 2,\ndonc vous gagnez",G," euros.")
              i+=1
              S=S+n
             
          print("Somme totale des nombres grattés : ",S)   

          if S%2==0:
              G=G+1
              print("Somme paire ! Vous gagnez 1 euro de plus.")
          print("\nTotal de vos gains : ",G, "euros.")    >

          • Partager sur Facebook
          • Partager sur Twitter
            28 mars 2015 à 13:43:33

            pour vérifier s'il y aune répétition des éléments tu met ces éléments dans une liste avec la methode liste.append(element) après tu utilises la boucle for comme ça                                   for elt in liste:

                                                                              if elt == element_recherché:

                                                                                            i+=1

                                                                                            if i == nombre_d_occurence_recherchéé:

                                                                                                    action à effectuer 

            tu vois l'idée non?!!

            • Partager sur Facebook
            • Partager sur Twitter

            Betsalel Lahoutou

              28 mars 2015 à 13:44:08

              STP place ton code dans les balises de code </>, c'est illisible ainsi...

              Pour sum, c'est dans la doc. Tu passes en argument ta liste.

              Pour la répétition des éléments, tu pourrais trier ta liste avec list.sort(). Ensuite tu itères sur chaque élément de la liste (une boucle for) et tu as une variable compteur, et élément_précédent que tu initialise respectivement à 1 et None. Pour chaque élément tu regardes s'il est égale à l'élément_précédent. Si oui, tu incrémentes compteur de 1. Si compteur est supérieur ou égal à 3, ça y est. Si l'élément est différent du précédent, tu ré-initialises le compteur à 1. Finalement tu assignes l'élément actuel à l'élément précédent et on reprend la boucle.

              -
              Edité par Dan737 28 mars 2015 à 14:15:37

              • Partager sur Facebook
              • Partager sur Twitter
                28 mars 2015 à 13:47:18

                n'oublie pas i est un compteur comme tu a déjà définie une variable i tu dois utiliser une autre variable

                • Partager sur Facebook
                • Partager sur Twitter

                Betsalel Lahoutou

                  28 mars 2015 à 17:57:17

                  Non, je ne comprends rien. Je n'ai pas encore atteint ce niveau.

                  Merci quand même, je verrai plus tard.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    28 mars 2015 à 18:06:37

                    Qu'est-ce que tu ne comprends pas?

                    Dans l'ordre, pour la somme des éléments d'une liste il suffit d'utiliser sum avec en argument la liste.

                    ma_liste = [3, 6, 4, 2, 8, 7]
                    somme_liste = sum(ma_liste)
                    print(somme_liste)
                    

                    Pour trouver des répétitions d'éléments, c'est quoi qui te largue? Il y a du vocabulaire que tu ne comprends pas?

                    Sinon libre à toi d'y revenir plus tard.

                    • Partager sur Facebook
                    • Partager sur Twitter
                      28 mars 2015 à 18:20:29

                      Mes 2 progressions ne sont pas harmonisées : le Foucher est trop succint et je dois me débrouiller (c'est pourquoi je bloque aujourd'hui), le manuel Python est très riche et je n'ai pas encore découvert les notions qui pourraient m'aider.

                      Il faut que j'avance en Python et je verrai mieux. Mais je vais quand même insister avec tes conseils et je te dirai.

                      Merci en tout cas pour tes efforts pour m'aider, c'est très sympa de ta part.

                      • Partager sur Facebook
                      • Partager sur Twitter
                        29 mars 2015 à 0:38:06

                        relit bien tu comprendra je l'ai simplifie pour toi comme tu n'a pas encore fini de lire le livre peut etre que la methode append (liste.append(element)) te sera etrangere mais sache tout simplement que c'est pour ajouter un element a un liste utilise la tout simplement!!! DZl pour les accents j'utilise un clavier americain et je le prefere comme ca

                        :)

                        -
                        Edité par Betsalel LAHOUTOU 29 mars 2015 à 0:42:43

                        • Partager sur Facebook
                        • Partager sur Twitter

                        Betsalel Lahoutou

                          29 mars 2015 à 0:39:11

                          from random import randrage # randrage pernet de generer des nombres aleatoires dans notre cas ca sera entre 1 et 5
                          
                          partie = True # un booleen qui nous pernet de continuer ou arreter le jeux
                          
                          while partie:
                          
                              i = 0 # c'est une variable qu'on va utiliser pour boucler afin de pouvoir avoir 5 fois des nombres aleatoires
                          
                              s = 0 # la variable qui contiendra la somme des nombres
                          
                              argent = 0
                          
                             liste = [] #dans cette liste je vais ajouter les les nombres que le programme va generer
                          
                              while i < 5:
                          
                                  input(''Appuyer sur entrer: '') # enfait on n'a pas besoin que l'utilisateur nous fourni des valeurs donc pas la peine d'affecter a une variable la valeur saisie
                          
                                  nombre = random.randrange(1, 5)
                          
                                  print("Vous avez gratez", nombre)
                          
                                  s = s + nombre # on ajoute chaque fois le nombre qu'on trouve a l'ancienne valeur de somme et somme prend cette nouvelle valeur
                          
                                  liste.append(nombre) # cette ligne permet tout simplement d'ajouter les nombres generer  a la liste on l'appelle une methode des liste
                          
                                  i += 1 # on incremente pour que la boucle s'execute jusqu'a 5 fois puisque l'utilisateur doit taper 5 fois entrer
                          
                              if s <= 2:
                          
                                  argent += 2
                          
                                  print('YESSS!!!!'Le nombre est nferieur  a deux vous gagnez 2 euros vous disposez maintenant de", argent, "euro")
                          
                              if argent %2 == 0:
                          
                                 argent += 1
                          
                                  print("La somme est paire vous gagnez 1 euro vous disposez maintenant de", argent)
                          
                              n = 0 # c'est le compteur du nombre d'occurence des elements de la liste
                          
                              for elt in liste: # on parcour les elements de la liste
                          
                                  for nb in liste: # ici on parcourt la liste une deuxieme fois pour comparer premier element de la liste aux suivants
                          
                                      if elt == nb:
                          
                                          n += 1
                          
                                  if n < 3: # ici si pour le premier element l'occurence n'est pas superieur a trois on ramene le compteur a zero pour pouvoir compter l'element suivant
                          
                                      n = 0
                          
                              if n >= 3:
                          
                                  argent += 5
                          
                                  print("Un element c'est repete au moins 3 fois vous gagnez 5 euros vous disposez maintenant de", argent, "euros")
                          
                              choix = input("voulez vous continuer?(o/n) ")
                          
                              if choix == "n":
                          
                                  partie = False #alors le programme se ferme
                          
                              else:
                          
                                  partie = True # on reprend le jeu
                          • Partager sur Facebook
                          • Partager sur Twitter

                          Betsalel Lahoutou

                            29 mars 2015 à 0:40:23

                            le code est maintenant bien presente pour toi :) :)

                            • Partager sur Facebook
                            • Partager sur Twitter

                            Betsalel Lahoutou

                              29 mars 2015 à 9:00:14

                              Sauf que le code contient des petites fautes. Enfin, ça lui fera un bon exercice pour essayer de comprendre la méthode, sans faire un bête copier-coller...

                              Et comme je l'avais mentionné plus haut en commentaire de son code, il est préférable de faire une boucle for plutôt que while vu qu'on sait qu'on doit répéter les instructions suivantes 5 fois.

                              • Partager sur Facebook
                              • Partager sur Twitter
                                29 mars 2015 à 12:08:19

                                Voila ma solution, pour une fois je n'ai pas condensé et je pense que c'est assez clair:

                                from random import randint
                                
                                n = 5 #le nombre d'essais
                                cagnotte = 0 #notre gain
                                liste_numeros = []
                                
                                def somme(liste):
                                    """Même chose que la fonction sum (en moins bien), mais on le fait
                                       nous-même"""
                                    compteur = 0
                                    for elt in liste:
                                        compteur += elt
                                    return compteur
                                    
                                
                                for i in range(n):
                                    input("Apppuyez sur entrée pour jouer: ")
                                    numero = randint(1, 5)
                                    liste_numeros.append(numero)
                                
                                    if numero <= 2:
                                        cagnotte += 2
                                
                                    if somme(liste_numeros) % 2 == 0:
                                        cagnotte += 1
                                
                                    if liste_numeros.count(numero) >= 3:
                                        #on compte le nombre d'occurences du numéro en cours dans la liste
                                        cagnotte += 5
                                
                                    print("Votre cagnotte est de: {}".format(cagnotte))

                                S'il y a quelque chose que tu ne comprends pas, n'hésite pas à me demander :)

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  29 mars 2015 à 13:31:29

                                  Si la somme totale est paire, on gagne 1 euro.

                                  Toi tu vérifies durant l'ajout des nombres et donc tu n'auras pas le résultat correct. Il faut sortir cette partie hors de la boucle.

                                  Pour la partie concernant le nombre d’occurrences d'un même nombre, c'est aussi erroné. Imagine qu'on gratte 5 fois le nombre 2. Tu vas augmenter ta cagnotte de 15 et non que de 5.

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    29 mars 2015 à 15:28:47

                                    Ouh, dire que j'avais renoncé en partant du principe que j'y reviendrais après poursuite du cours !

                                    Merci beaucoup à vous pour toutes ces aides !

                                    J'avais réussi le jeu du Casino (dans le manuel de Vincent Le Goff), mais ce jeu dans le manuel Foucher me donne bien du fil à retordre... Je reste persuadée que je n'ai pas encore le niveau requis, même si dans la progression du Foucher, on doit pouvoir écrire les algo et les coder avec les connaissances qui précèdent (logique).

                                    Je vais essayer ces solutions et je vous dis.

                                    Merci encore !!

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      29 mars 2015 à 17:05:34

                                      from random import*
                                      partie = True # un boléen pr continuer plus facilement
                                      
                                      while partie:
                                          S=0 #var pour la somme des n
                                          i=0 # var pour la boucle de 5 fois
                                          G=0 # var pr le gain
                                          n=0 # n du tirage
                                          liste=[]
                                      
                                      
                                          while i<5 : #5 = 5 tirages possibles
                                          
                                              input("\nPour gratter faites Entrée :")
                                              n=randint(1,5)
                                              print("Vous avez gratté le nombre ",n)
                                              S=S+n
                                              liste.append(n)
                                              print("Nombres rangés ", liste)
                                              i+=1# incrémentation jusqu'à 5 tirages
                                          
                                              if n<=2:
                                                  G+=2
                                                  print("YESSS !! Le nombre est inférieur ou égal à 2,\ndonc vous gagnez",G," euros.")
                                                  print("La somme des nombres est : ",S,)
                                              
                                              n = 0 # c'est le compteur du nombre d'occurence des elements de la liste
                                              for elt in liste: # on parcourt les elements de la liste (mot-clé elt)
                                                  for nb in liste: # ici on parcourt la liste une deuxieme fois (mot clé nb)
                                                               #pour comparer premier element de la liste aux suivants
                                                      if elt == nb:
                                                          n += 1
                                                  if n < 3: # ici si pour le premier element l'occurence
                                                          #n'est pas superieur à trois on ramene
                                                          #le compteur à zero pour pouvoir compter l'element suivant
                                                      n = 0
                                              if n >= 3:
                                                  G += 5
                                                  print("Un élément s'est repete au moins 3 fois")
                                                  print ("vous gagnez 5 euros vous disposez maintenant de", G, "euros")
                                       
                                      
                                          if S%2==0:
                                              G+=1
                                              print("\nSomme paire ! Vous gagnez 1 euro de plus.")
                                              print("\nTotal de vos gains : ",G, "euros.")
                                      
                                          choix = input("Voulez-vous continuer ? (o/n) ")
                                          if choix=="n":
                                              partie=False
                                              print("A bientôt.")
                                          else:
                                              partie=True
                                      
                                      # mots clés découverts : elt et nb
                                      
                                      Voici celui de betsaa00yn. Il marche très bien !
                                      Je ne connaissais pas les mots-clés : nb et elt (c'en est bien ?). 
                                      La méthode append était citée dans le Foucher mais sans être exploitée. J'ai préféré commencer avec celle-ci.
                                      Je confondais 2 choses : la liste (pour la répétition des éléments) et le tirage au sort des 5 éléments. 
                                      Je n'aurais jamais pensé à tout ceci. Je ne suis donc pas encore au point !
                                      Je vais essayer les autres codes.
                                      A très vite pour la suite, et merci encore, je rumine depuis vendredi et ça gâche un peu le week-end !!
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        29 mars 2015 à 17:07:10

                                        Oh j'ai oublié de fermer l'insertion du code ! Désolée pour cette présentation, je vais finir par être précise !
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          29 mars 2015 à 17:26:53

                                          en fait nb et elt ne sont pas de mots cles se sont des variables auxquelles tu affectes a chaque fois la valeur des elements de ta liste

                                          c'est a dire quand tu fais:

                                          for elt in liste: #tu peux aussi mettre nb a la place de elt
                                              print(elt) """ au premier tour de la boucle elt prend 
                                                         la valeur du premier element de ta boucle, au deuxieme tour il prend la valeur du deuxieme element donc a la fin il aura la valeur du dernier element de ta liste"""
                                          



                                          -
                                          Edité par Betsalel LAHOUTOU 29 mars 2015 à 17:27:34

                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          Betsalel Lahoutou

                                            29 mars 2015 à 20:46:20

                                            # for...in range
                                            # for elt in (T) très impt
                                            
                                            partie = True
                                            
                                            while partie :
                                            
                                                from random import*
                                                T=[]
                                                S=0
                                                G=0
                                                i=0
                                                k=0
                                            
                                                for i in range(5) :
                                                    n=input("\n\nPour gratter faites Entrée :")
                                                    n=randint(1,5)
                                                    print("Vous avez gratté le nombre ",n)
                                                    T.append(n)
                                                    print("classement : ",T)
                                                
                                                    if n<=2:
                                                        G=G+2
                                                        print("YESSS !! Le nombre est inférieur ou égal à 2,\ndonc vous gagnez",G," euros.")
                                                    i+=1
                                                    S=S+n
                                            
                                                    n=0#compteur à 0 pr les occurrences du tableau(pas de la boucle !)
                                                for elt in(T):#on parcourt les elts tableau, soit sorte d'indice
                                                    for nb in T:#on parcourt les n tirés pr comparer n et elt
                                                        if elt==nb:
                                                            n+=1 #on incrémente
                                                    if n<3:
                                                        n=0 #on remet à 0
                                                if n>=3: # on gagne !
                                                    G+=5
                                                    print("Un élément s'est répété au moins 3 fois,\nvous gagnez 5 euros de plus, \nce qui vous fait ", G, "euros.")
                                                print("Somme totale des nombres grattés : ",S)    
                                                if S%2==0:
                                                    G=G+1
                                                    print("Somme paire ! Vous gagnez 1 euro de plus.")
                                                print("\nTotal de vos gains : ",G, "euro(s).")
                                                choix =input("Vous continuez ? (o/n) ")
                                                if choix =="n":
                                                    partie =False
                                                    print("Salut.")
                                                else:
                                                    partie=True
                                                    print("Bravo.")
                                                   
                                               
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              29 mars 2015 à 20:49:05

                                              Voici celui que j'ai pu faire avec la boucle déterministe (for... in range). Il fonctionne très bien aussi.

                                              Merci pour la précision sur les mots clé qui n'en sont pas, j'ai remplacé pour tester et en effet ça marche aussi bien.

                                              Je vais essayer les autres encore.

                                              Merci beaucoup pour cette aide, ça me fait avancer et je ne reste pas sur une déception.

                                              A très bientôt !

                                              • Partager sur Facebook
                                              • Partager sur Twitter

                                              Aide pourprogrammer le jeu à gratter

                                              × 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.
                                              • Editeur
                                              • Markdown