Partage
  • Partager sur Facebook
  • Partager sur Twitter

TP ZCasino

    14 novembre 2010 à 17:32:50

    Bonsoir,

    J'ai fait le 1er TP de du tutoriel et voici mon code:

    import os
    from random import randrange
    from math import ceil
    argent = 10000
    
    while 1:
    
    
        print("Vous avez", argent, "euros")
    
    
        print("Choisissez un numero entre 0 et 49")
        choix = input ()
        choix = int(choix)
        try:
            choix=int(choix)
            if choix <=0 or choix > 50: 
                raise ValueError ("Erreur")
        except ValueError:
            print("Valeur invalide")
    
    
        print("Choississez votre mise")
        mise = input ()
        mise = int(mise)
        try:
            mise=int(mise)
            if mise <=0:
                raise ValueError ("Mise invalide")
        except ValueError:
            print("Valeur invalide")
    
    
        print("Rouge 1 ou noir 0 ?")
        couleur = input()
        couleur = int(couleur)
        if couleur != 0 or couleur != 1 :
            print("Erreur d'entree")
            break
    
        print("Avez vous gagner sur le numero ?")
        randrange (50)
        if randrange(50) =  choix:
            argent = 3*mise
            print("WWooW, vous avez gagne !", "Vous avez actuellement", argent, "euros")
        else:
            print("Non, dommage")
            argent = argent - mise
    
        print("Avez vous gagner sur la couleur ?")
        randrange(2)
        if randrange(2) = couleur:
            print("Gagne! Vous recevez", ceil(mise/2), "euros")
            argent = argent + ceil(mise/2)
        else:
            print("Dommage, perdu")
            argent = argent - mise
    
    os.system("Pause")
    


    Je voudrai savoir si vous pouviez m'aider à résoudre les differents problemes. Je ne cherche pas à optimiser mon code mais juste à ce qu'il marche.

    Merci d'avance ;)
    • Partager sur Facebook
    • Partager sur Twitter
      14 novembre 2010 à 17:55:09

      Ah ouai, c'est cool...

      Mais il serait encore mieux de nous dire ce qui ne marche pas.
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        14 novembre 2010 à 21:44:44

        Citation

        Je voudrai savoir si vous pouviez m'aider à résoudre les differents problemes. Je ne cherche pas à optimiser mon code mais juste à ce qu'il marche.



        ligne 43 et 52

        tuto

        Sinon faut toujours essayer d'optimiser son code. ;)
        • Partager sur Facebook
        • Partager sur Twitter
          14 novembre 2010 à 21:47:40

          À mon avis il disait par là qu'il voulait d'abord résoudre tous les bugs avant de commencer à se plonger dans l'optimisation et la factorisation.

          Et c'est la meilleure façon de faire. :)
          • Partager sur Facebook
          • Partager sur Twitter
            15 novembre 2010 à 18:39:49

            Euh, t'as au moins essayé d’exécuter ton code ou t'as juste eu la flemme et tu t'es dis qu'on te corrigerai tout ici ?
            Non parce que faut pas déconner mais juste en survolant on voit qu'il y a pleins de conneries. En plus les messages erreurs de python sont assez clairs quand même...

            • - if var1 == var2: pass
            • - randint() est beaucoup plus adapté que randrange()
            • - Sèrieux problème dans ton algorithme (écrit le sur papier d'abord au lieu de te lancer tête baissée dans le code)
            • - Ton os.system("Pause") n'est pas portable
            • - Tu utilises mal les exceptions, consolide tes bases avant de t'y attaquer
            • - Respecte la PEP 8 pour plus de lisibilité dans ton code
            • - if couleur != 0 or couleur != 1 : pass mauvaise utilisation du or dans ce cas (ligne 37).
            • randrange (50) # Complètement inutile; de même pour le tirage couleur !
                  if randrange(50) =  choix: pass
              


            Ensuite il y a quelques trucs comme : argent = 3*mise qui n'ont pas le comportement attendu.

            Donc avant de t'attaquer à des jeux plus ou moins complet en terme du besoin de connaissance sans même prendre le temps de te relire ou de comprendre ce qui ne va pas, fais des trucs simples et cherche pendant des heures s'il faut avant de venir demander une réponse pré-mâchée sur le forum...
            • Partager sur Facebook
            • Partager sur Twitter
              15 novembre 2010 à 18:52:30

              Bonsoir,
              Désolé, j'ai posté trop rapidement, j'avais pas de debugger sous la main.
              J'ai l'impression que dans la console on ne peut pas faire interpreter tout le code directement, il faut faire du ligne par ligne.

              En tout cas merci de vos réponses je vais m'y replonger et trouver un debugger
              • Partager sur Facebook
              • Partager sur Twitter
                15 novembre 2010 à 20:41:02

                Pas vraiment besoin de debugger pour résoudre ce genre de problème. Tu peux utiliser L'IDLE de python en fait "Open...", en choisissant l'endroit où ton fichier est enregistré, ensuite "Run", "Run Module" ou F5 et ensuite il va te mettre la première erreur qu'il rencontre. Tu fais ça jusqu'à ce que t'as plus d'erreur.
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  15 novembre 2010 à 21:47:05

                  Citation

                  Donc avant de t'attaquer à des jeux plus ou moins complet en terme du besoin de connaissance sans même prendre le temps de te relire ou de comprendre ce qui ne va pas, fais des trucs simples et cherche pendant des heures s'il faut avant de venir demander une réponse pré-mâchée sur le forum...



                  Hum... je trouve que t'y avais un peu fort avec quelqu'un qui débute.

                  Le but c'est pas de le dégoûté en lui sortant tout les défauts dans la tronche.

                  L'algo... Ben je pense que déjà il veut que ça fonctionne, on a pas tous les même idées, sinon on aurait tous les mêmes codes.

                  os.system("pause") --> Que ça soit portable ou pas, pour un débutant c'est bien le dernier de ses soucis.

                  Enfin je te trouve bien agressif, ici c'est quand même le siteduzero et pas le sitedupro.

                  Pour les exceptions tu as raison je l'admet :)

                  • Partager sur Facebook
                  • Partager sur Twitter
                    15 novembre 2010 à 22:09:43

                    EDIT: J'ai installe PYScripter et j'aime beaucoup

                    Mon code fonctionne :

                    import os
                    from random import randrange
                    from random import randint
                    from math import ceil
                    argent = 10000
                    
                    while 1:
                    
                    
                        print("Vous avez", argent, "euros")
                    
                        print("Choisissez un numero entre 0 et 49")
                        choix = input ()
                        choix = int(choix)
                        try:
                            choix=int(choix)
                            if choix <=0 or choix > 50:
                                raise ValueError ("Erreur")
                        except ValueError:
                            print("Valeur invalide")
                    
                    
                        print("Choississez votre mise")
                        mise = input ()
                        mise = int(mise)
                        try:
                            mise=int(mise)
                            if mise <=0:
                                raise ValueError ("Mise invalide")
                        except ValueError:
                            print("Valeur invalide")
                    
                    
                        print("Rouge 1 ou noir 0 ?")
                        couleur = input()
                        couleur = int(couleur)
                    
                        print("Avez vous gagner sur le numero ?")
                        bon_numero = randrange (50)
                        if bon_numero ==  choix :
                            argent = 3*mise + argent
                            print("WWooW, vous avez gagne !", "Vous avez actuellement", argent, "euros")
                        else:
                            print("Non, dommage")
                            argent = argent - mise
                    
                        print("Avez vous gagner sur la couleur ?")
                        bonne_couleur = randrange (2)
                        if bonne_couleur == couleur:
                            print("Gagne! Vous recevez", ceil(mise/2), "euros")
                            argent = argent + ceil(mise/2)
                        else:
                            print("Dommage, perdu")
                            argent = argent - mise
                    
                    os.system("Pause")
                    


                    Je voudrai savoir ce qu'il est possible de faire pour l'optimiser.
                    Je pense qu'il y a deux trois trucs a ameliorer au niveau des exceptions et de la boucle, je vais reprendre le cours ce soir.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      17 novembre 2010 à 21:56:22

                      Voilà qui est mieux, un code qui marche et un minimum de recherche ça motive déjà beaucoup plus pour t'aider :)
                      Alors pour les points d'optimisation j't'ai commenté ton code en ciblant ce qui fait défaut ! En résumé il manque juste un peu de factorisation, et le respect de le PEP8.
                      import os # inutile cf. dernière ligne
                      from random import randrange
                      # tu importes randint c'est très bien mais tu ne l'utilises pas !
                      from random import randint 
                      from math import ceil
                      argent = 10000
                      # une boucle infinie n'est jamais une bonne idée, il te faut un moyen de l’arrêter
                      # tu peux pour améliorer ton code demander a chaque tour à l'utilisateur s'il veut
                      # s’arrêter et le faire sortir de la boucle ! (par exemple ;))
                      while 1: 
                          print("Vous avez", argent, "euros")
                          print("Choisissez un numero entre 0 et 49")
                          # là tu n'pas besoin des deux lignes suivantes tu peux juste remplacer le
                          # choix = int(choix) dans ton try par choix = int(input()) #(1)
                          # cet ordre rend d'ailleurs ton try inutile
                          choix = input ()
                          choix = int(choix)
                          try:
                              choix=int(choix) # espaces à ajouter
                              if choix <=0 or choix > 50: # respect de la PEP8 : choix <= 0
                                  raise ValueError ("Erreur") # pas d'espace avant la première parenthèse
                          except ValueError:
                              print("Valeur invalide")
                      
                          print("Choississez votre mise")
                          # voir #(1) 
                          mise = input ()
                          mise = int(mise)
                          try:
                              mise=int(mise)
                              if mise <=0:
                                  raise ValueError ("Mise invalide")
                          except ValueError:
                              print("Valeur invalide")
                      
                          print("Rouge 1 ou noir 0 ?")
                          # factoriser comme dans #(1) : couleur = int(input())
                          # et ajouter un bloc try comme t'es parti sur cette voie
                          couleur = input()
                          couleur = int(couleur)
                      
                          print("Avez vous gagner sur le numero ?")
                          # tu le réutilises pas après donc inutile de le mettre dans une variable
                          # "if randrange(50) == choix:" est mieux (btw, randint est plus adapté) #(2)
                          bon_numero = randrange (50) 
                          if bon_numero ==  choix : # trop d'espace nuit a la lisibilité : deux en trop ici
                              argent = 3*mise + argent # simplifiable : argent += 3*mise #(3)
                              # "a", "b" : ca sert a quoi ?
                              print("WWooW, vous avez gagne !", "Vous avez actuellement", argent, "euros")
                          else:
                              print("Non, dommage")
                              argent = argent - mise # voir #(3)
                      
                          print("Avez vous gagner sur la couleur ?")
                          bonne_couleur = randrange (2) # voir #(2)
                          if bonne_couleur == couleur:
                              print("Gagne! Vous recevez", ceil(mise/2), "euros")
                              argent = argent + ceil(mise/2) # voir #(3)
                          else:
                              print("Dommage, perdu")
                              argent = argent - mise # voir #(3)
                      
                      os.system("Pause")# à remplacer par input() qui, même s'il n'est pas adapté, est portable 
                      


                      @fred1599: Pas besoin d'être sur un site de pro pour exiger un minimum de recherche de la part de quelqu'un qui nous demande de l'aide. Et je n'ai absolument pas voulu le dégouter mais le faire s’intéresser à une partie de la programmation qui consiste à rechercher et trouver ses erreurs par soi-même surtout quand elles sautent aux yeux.
                      • Partager sur Facebook
                      • Partager sur Twitter

                      TP ZCasino

                      × 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