Partage
  • Partager sur Facebook
  • Partager sur Twitter

[python]mauvais code

quelle est l'erreur...

Sujet résolu
    11 mars 2006 à 12:22:12

    voila j'ai fait un code... Mais il refuse de s'éxécuter, svp aidez moi


    #!/usr/bin/env python
    from random import *
    print"salut‚ bienvenu sur le jeu de plus ou moin !"
    nbr1=randrange(01001)
    nbr=raw_input("entrez un nombre entre 0 et 100")
    while (int(nbr1)!=(int)nbr)):
         nbr=raw_input("entrez un nombre entre 0 et 100")
                 if (int(nbr)==(int(nbr1)): break
                 elif (int(nbr)<(int(nbr1)):
                     print'non‚ trop petit'
                 else:
                     print'non‚ trop grand'
                    

    a=raw_input('le programme est terminé‚ appuiez sur entrer')
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      11 mars 2006 à 13:09:27

      Hmm déjà ta source est pas super lisible. Essaye d'utiliser des input pour les nombres, ça évitera pas mal de int(machin), ou mets ces int autour de raw_input :

      foo = int(raw_input())

      Ensuite, mets des espaces (tu peux écrire 'foo = machin', ça marche aussi bien hein. Et c'est plus lisible non ?)

      Le problème vient apparemment de plusieurs choses :

      - Caractères parasites sur les virgules dans randrange (chez moi en tout cas. Tu utilises quoi comme éditeur ? Es-tu sûr de bien sauvegarder ?)
      - Comme ce que tu fais est illisible, tu te plantes toi même, ainsi y'a des problèmes de parenthèse dans le while pour le deuxième appel à int :

      while (int(nbr1)!=(int(nbr))):

      Qui pourrait devenir bien plus lisible avec ce que j'ai déjà dit jusqu'à maintenant et la suppression d'un couple de parenthèses inutile :

      while nbr1!= nbr:

      Tu as les mêmes problèmes pour le if et le elif (tu vois l'importance d'écrire un truc lisible), avec en plus une erreur d'indentation : pourquoi mets tu 5 espaces devant la première ligne dans le while, et plus après ?

      J'ajoute que pour le moment le programme ne fonctionne pas chez moi donc je rééditerai ce message quand j'aurai mangé puis corrigé.
      • Partager sur Facebook
      • Partager sur Twitter
        11 mars 2006 à 13:20:38

        ba pour les "int" dans mon bouquin ils me disent de les mettre... Et pour ce qui est des caractères parasites je fait comment?? Sinon j'utilise notepad++
        et pour l'instant d'après ce que tu ma dit ca devrait donner ca :

        #!/usr/bin/env python
        from random import *
        print"salut‚ bienvenu sur le jeu de plus ou moin !"
        nbr1 = randrange(01001)
        nbr = raw_input("entrez un nombre entre 0 et 100")
        while nbr1 != nbr:
             nbr=raw_input("entrez un nombre entre 0 et 100")
                 if nbr == nbr1 : break
                 elif nbr < nbr1:
                         print'non‚ trop petit'
                 else:
                         print'non‚ trop grand'
                        

        a = raw_input('le programme est terminé‚ appuiez sur entrer')


        merci pour ta réponse
        • Partager sur Facebook
        • Partager sur Twitter
          11 mars 2006 à 13:36:20

          Quand tu met un raw_input, tu entre une chaine caractères. Alors qu'en mettant directement un input, tu auras ton chiffre. Ton int sera alors inutile.
          Pour ton problème de virgule, essaie de changer d'éditeur et dis-nous si ça marche mieux.
          Et fait surtout bien attention à l'indentation : quand tu es dans une boucle ou dans un if, utilise une fois Tabulation pour indenter.
          Et aère ton code, il sera encore plus lisible et facile à corriger. Tu peux aussi enlever le a du raw_input de la fin, il ne sert à rien.

          Chez moi, en corrigeant j'ai ça :
          #!/usr/bin/env python
          from random import *

          print"salut‚ bienvenu sur le jeu de plus ou moin !"

          nbr1=randrange(01001)
          nbr=input("entrez un nombre entre 0 et 100")

          while nbr1 != nbr:
              nbr=raw_input("entrez un nombre entre 0 et 100 ")
              if nbr == nbr1:
                  break
              elif nbr < nbr1:
                  print'non‚ trop petit'
              else:
                  print'non‚ trop grand'

          raw_input('le programme est terminé‚ appuiez sur entrer')


          Bigloo => Si je me suis planté, dis-le ^^
          Edit : chez moi il m'affiche toujours trop grand…
          • Partager sur Facebook
          • Partager sur Twitter
            11 mars 2006 à 13:40:46

            merci, mais pour ce qui est de l'éditeur lequel est a choisir???
            • Partager sur Facebook
            • Partager sur Twitter
              11 mars 2006 à 13:44:14

              Je suis sur Mac, et j'utilise SubEthaEdit.
              Je teste aussi DrPython, qui permet de tester dans la même fenêtre que l'éditeur.
              Mais sur Pc… :euh:
              • Partager sur Facebook
              • Partager sur Twitter
                11 mars 2006 à 13:46:34

                ok.. je vous remerci beaucoup toi et bigloo. Au fait ca prend combien de temps pour arriver a faire des console en fenetre???
                • Partager sur Facebook
                • Partager sur Twitter
                  11 mars 2006 à 13:48:13

                  J'ai commencé au début des vacances d'hiver et je commence à faire des trucs simpas avec Tkinter.
                  C'est pas trop long tu vois ^_^
                  Mais chez moi, ça ne marche toujours pas…
                  Pense à ajouter des commentaires, ça peut aider à trouver les erreurs.

                  Edit : Voila ton code corrgié par mes soins :
                  #!/usr/bin/env python
                  from random import *

                  print"salut‚ bienvenu sur le jeu de plus ou moin !"

                  nbr1 = randrange(01001)
                  nbr = 101 # Pour que ce nombre ne puisse pas etre tire au sort

                  while nbr1 != nbr:
                      nbr = input('entrez un nombre entre 0 et 100 ')
                      if nbr == nbr1:
                          break
                      elif nbr < nbr1:
                          print'non‚ trop petit'
                      else:
                          print'non‚ trop grand'
                                 

                  raw_input('le programme est termine‚  appuiez sur entrer')
                  • Partager sur Facebook
                  • Partager sur Twitter
                    11 mars 2006 à 13:51:39

                    C'est quuoi Tkinter?????
                    Chez moi meme ta correction ne marche pas j'espere que cela ne vient que de l'éditeur

                    en tout cas merci
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      11 mars 2006 à 13:54:14

                      Pmol> On règle ça par MSN pour le blem des fenêtres ^^

                      Et ta version de son programme contient une erreur que t'as qu'à trouver tout seul :p

                      Tonpy> Pour les caractères parasites, change d'éditeur :/ Pourquoi ne pas utiliser IDLE ?

                      Mais c'est un problème étonnant. C'est possible que ça vienne de chez moi, donc disons que tant que ça passe chez toi après avoir réglé les autres problèmes c'est bon.

                      Sinon en fait ton programme marche bien, mais tu noteras que la première fois que tu demandes à l'utilisateur d'entrer un chiffre, il n'a pas d'indications ("plus grand" ou "plus petit"). Essaye de modifier ça (Pmol avait eu le même problème :p )
                      • Partager sur Facebook
                      • Partager sur Twitter
                        11 mars 2006 à 13:54:31

                        Citation : tonpy

                        C'est quuoi Tkinter?????



                        Tkinter c'est une interface graphique. Pour afficher tes scripts dans une fênetre un peu plus jolie que celles de la ligne de commande.

                        Citation : tonpy

                        quand tu dit que ça ne marche pas tu parle de tes prog??


                        Je parlais de ton script.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          11 mars 2006 à 14:16:41

                          Pmol > coment on fait pour utiliser tkinter???

                          bigloo > IDLE ce n'est qu'un prgramme qui comprend certains script en python mais on ne peu rien coder dessu non?????

                          en tout cas que se soit abec iddle ou un autre le programme corrigé par Pmol marche pas T_T
                          • Partager sur Facebook
                          • Partager sur Twitter
                            11 mars 2006 à 14:35:08

                            Pour utiliser Pkinter, il faut l'importer, comme le module random.
                            from Tkinter import *

                            Télécharge ce PDF, qui est le cours de référence sur Python en français. Et va voir en page 82. ils expliquent comment utiliser Tkinter en détails.
                            Je vais chercher un éditeur sur Windows...
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              11 mars 2006 à 15:10:30

                              La version de Pmol fonctionne, à l'exception du randrange qui compte des caractères parasites, apparemment.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                11 mars 2006 à 15:16:03

                                cela ne vient pas des caractère... je ne comprendplus, j'ai fait un autre programme utilisant randrange avec notepad++ et il marche
                                • Partager sur Facebook
                                • Partager sur Twitter
                                Anonyme
                                  11 mars 2006 à 15:51:51

                                  Comment sais-tu que ça ne vient pas des caractères ? Python signale la plupart du temps juste une faute de syntaxe. Il signale une erreur ou le programme ne fait juste pas ce qu'il doit ?
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    11 mars 2006 à 15:54:23

                                    J'ai fait un autre programme en utilisant le meme randrange... et il marche
                                    par contre avec celui la, il marche pas
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Anonyme
                                      11 mars 2006 à 15:59:09

                                      Oui mais justemment là je sais pas pourquoi ça vient des caractères, les virgules je pense (celles qui sont entre parenthèses), pas de randrange.

                                      Parce que quand je les change chez moi ça marche.
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        11 mars 2006 à 16:01:11

                                        tu les changes comment?
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        Anonyme
                                          11 mars 2006 à 16:03:45

                                          Ben je les réécris dans un éditeur de texte.
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            11 mars 2006 à 16:09:51

                                            Atta tu veu dire que dan ton éditeur les (0,100,1)
                                            bug et que qand tu les réécrit sa marche?
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              11 mars 2006 à 17:38:50

                                              oui, visiblement parce que la virgule utilisée n'est pas une virgule normale, mais un caractère très proche, qui n'est pas reconnu comme une virgule par le compilateur (ca s'appelle du pishing).
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                11 mars 2006 à 18:12:31

                                                ET du coup comment je doit faire pour quelle soit reconnue???
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  11 mars 2006 à 19:10:24

                                                  Voila un Plus ou Moin que j'ai fait il y a pas longtemp si ca peut t'aider :)
                                                  #!/usr/bin/python
                                                  # –*– coding: cp1252 –*–
                                                  import random

                                                  max = int(raw_input("Entrez la valeur maximal possible : "))

                                                  mystere = int(random.randint(1max))
                                                  reponse = int(raw_input("Votre Reponse : "))
                                                  Essai = 1
                                                  while (not reponse == mystere):
                                                     Essai = Essai+1
                                                     if (reponse < mystere):
                                                        print "Trop Petit !"
                                                        reponse = int(raw_input("Votre Reponse : "))
                                                     elif (reponse > mystere):
                                                        print "Trop Grand !"
                                                        reponse = int(raw_input("Votre Reponse : "))
                                                  if (reponse == mystere):
                                                     raw_input("Bravo ! Vous avez gagné en %s Coups !" % Essai)


                                                  si non je deconseille TK :p
                                                  prend plutot WX :p (QT est parfait mais Pyqt ne marche que sur linux (ca utilise Qt3 et QT3 est payant sur windows..), (pyGTK est sympa mais gere pas le Multithread sur windows o_o)
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    12 mars 2006 à 8:53:52

                                                    Je me pencheré sur Tkinter et le reste une autre foie car j'ai pas tout compris jusqua maintenant dans ton code... notament le "random.randint"
                                                    et est on obligé de mettre tout ces int() ?
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      12 mars 2006 à 8:54:57

                                                      Non, celui du random.randint n'est pas nécessaire.

                                                      Les autres, c'est pour convertir raw_input, qui renvoie une chaine, en entier.

                                                      Tu connais pas randint ? Utilise la doc :
                                                      >>> import random
                                                      >>> random.randint.__doc__
                                                      'Return random integer in range [a, b], including both end points.\n '
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        12 mars 2006 à 8:58:22

                                                        Ok merci, mais pour en revenir a mes virgules hantée, je peu donc rien faire???? Si oui, comment. Et si non pourquoi??
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          12 mars 2006 à 9:15:48

                                                          Citation : Bigloo

                                                          Ben je les réécris dans un éditeur de texte.



                                                          Tu mets ton curseur à droite de la virgule. Tu appuies sur la touche "<-" qui se trouve à côté de la touche entrée, et tu appuis sur la touche ',' qui se trouve à droite de la touche 'N', au dessus de la barre espace.

                                                          (bien sur, il faut repdroduire la manip sur toutes les virgules)
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            12 mars 2006 à 9:36:48

                                                            A yé c'est bon, mon prgramme marche ^^
                                                            Mais je cale encore sur un problème, voici mon code :

                                                            #!/usr/bin/env python
                                                            from random import *

                                                            print"\n\nsalut bienvenu sur le jeu de plus ou moin !\n"

                                                            nbr1 = randrange(01001)
                                                            nbr = input('entrez un nombre entre 0 et 100\n')
                                                            while nbr1 != nbr:
                                                                nbr = input('entrez un nombre entre 0 et 100\n')
                                                                if nbr == nbr1:
                                                                    break
                                                                elif nbr < nbr1:
                                                                    print'non trop petit\n'
                                                                else:
                                                                    print'non trop grand\n'
                                                                           
                                                            print'bravo bien joué\n'
                                                            raw_input('le programme est termine‚  appuiez sur entrer')


                                                            mais le problème c'est que cela me donne ceci :


                                                            entrez un nombre entre 0 et 100
                                                            50
                                                            entrez un nombre entre 0 et 100
                                                            50
                                                            non trop peti'



                                                            Et si je ne le met pas deux foie, mon code démarre pas la boucle...
                                                            alor j'ai assayé de faire ça :

                                                            #!/usr/bin/env python
                                                            from random import *

                                                            print"\n\nsalut bienvenu sur le jeu de plus ou moin !\n"

                                                            nbr1 = randrange(01001)
                                                            nbr = input('entrez un nombre entre 0 et 100\n')
                                                            while nbr1 != nbr:
                                                                if nbr == nbr1:
                                                                    break
                                                                elif nbr < nbr1:
                                                                    print'non trop petit\n'
                                                                    nbr = input('entrez un nombre entre 0 et 100\n')
                                                                else:
                                                                    print'non trop grand\n'
                                                                    nbr = input('entrez un nombre entre 0 et 100\n')
                                                                           
                                                            print'bravo bien joué\n'
                                                            raw_input('le programme est termine‚  appuiez sur entrer')


                                                            mais le programme ne 's'éxécute pas :colere:

                                                            voila merci

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter

                                                            [python]mauvais code

                                                            × 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