Partage
  • Partager sur Facebook
  • Partager sur Twitter

petites questions

novice appel expert pour éclairer sa lanterne !

    31 juillet 2010 à 16:59:25

    Bonjour, bonjour
    Voilà, je suis en train d'apprendre le langage python (c'est évident puisque je suis sur le forum de ce langage là :p ) et j'ai besoin d'un peu d'aide en ce qui concerne un petit jeu que je suis en train de créer. Je fais donc appel aux plus ou moins expérimentés d'entre vous (vous le serez sans doute plus que moi :D ), afin de me fournir l'aide dont j'ai besoin.

    Question n°1:


    while game:
    	print('Do you wish start a new game ? Answer Y or N.')
    	newgame=input()
    	while newgame!="Y":
    		if newgame=="N":
    	http://www.siteduzero.com/Templates/images/designs/2/zcode/fr/zcode_barre.png		print('Bye Bye...')
    continue#?
    		elif newgame!="Y" or newgame!="N":
    			print("""Please answer by entering 'Y' or 'N' for 'yes' or 'no' """)
    			newgame=input()
    			continue
    


    Ça, c'est le début du code de mon jeu. La variable game est un boléen qui permet de relancer les différentes phases du jeu (à la manière du TP Zcasino dans le tuto sur python) Le problème, c'est que j'aimerais savoir si il est possible sous python de revenir à la première boucle afin de retester la condition (ici le boléen "game")grâce au mot clé "continue" comme je l'ai marqué d'un "?" sous forme de commentaire dans le code. En clair, il faudrait dire à python d'oublier la boucle dans laquelle on se trouve (while newgame!="Y":) et directement repasser à la première (while game:). Comme game devient faux à la condition où la variable "newgame" vaut N, cela permettrai de sortir du jeu en terminant la boucle "while game".

    question n°2:


    J'aimerais savoir comment dire à python de fermer l'application en cours grâce à une fonction du module OS (je suis sous XP).

    dernière question


    Est-il possible, toujours à l'aide du module OS ou d'un autre module, de mettre le programme en pause durant un temps précis, le temps de lire une phrase par exemple. Pour que c soit plus clair, voilà un exemple: python exécute des lignes de code jusqu'à un print("quelque chose"). Là, il met le programme en pause pendant 5 secondes, puis il continue à exécuter le code qui suis une fois le temps écoulé.

    Voilà, j'espère avoir été assez clair pour que vous pussiez répondre à mes questions et je vous remercie d'avance !
    • Partager sur Facebook
    • Partager sur Twitter
    Benaitier Fabien
    Anonyme
      31 juillet 2010 à 17:15:46

      Bon vite fait à la console et en version 2.6, ce qui te permettra de travailler un peu mon code.

      Voici ton code qui te permet de continuer si une erreur, et de traiter la suite de ton programme si le bonhomme te répond par Y ou N

      >>> game=True
      >>> while game:
      	print 'Do you wish start a new game ? Answer Y or N.' # pour ton print en version 3 c'est ok aussi
      	newgame=raw_input() # en version 3 c'est bien input()
      	if newgame=="Y" or newgame=="N":
      		game=False # on quitte la boucle, on peut continuer le traitement
      	else :
      		print "repondez par Y ou N"
      		continue # On revient au début de la boucle
      


      Edit :

      Citation

      Est-il possible, toujours à l'aide du module OS ou d'un autre module, de mettre le programme en pause durant un temps précis, le temps de lire une phrase par exemple. Pour que c soit plus clair, voilà un exemple: python exécute des lignes de code jusqu'à un print("quelque chose"). Là, il met le programme en pause pendant 5 secondes, puis il continue à exécuter le code qui suis une fois le temps écoulé.



      import os
      os.system('pause')
      


      Bon courage pour la suite :)
      • Partager sur Facebook
      • Partager sur Twitter
        31 juillet 2010 à 22:35:07

        Citation : fabben


        question n°2:



        J'aimerais savoir comment dire à python de fermer l'application en cours grâce à une fonction du module OS (je suis sous XP).



        Il existe deux manières de faire ça, la seconde étant plus pratique, la première plus modulable :

        import sys
        sys.exit(0)
        


        De cette manière tu peux quitter le programme en renvoyant un code de fermeture (classiquement 0 signifie "aucun problème".) à l'OS pour savoir si le programme a été terminé "normalement" ou bien suite à une erreur (le code renvoyé permettant de savoir de quel genre d'erreur il s'agit).

        La seconde méthode, plus pythonique, est de lever la "builtin exception" prévue à cet effet :

        raise SystemExit
        
        • Partager sur Facebook
        • Partager sur Twitter
        Zeste de Savoir, le site qui en a dans le citron !
          1 août 2010 à 0:10:39

          Citation : fabben

          Est-il possible, toujours à l'aide du module OS ou d'un autre module, de mettre le programme en pause durant un temps précis, le temps de lire une phrase par exemple. Pour que c soit plus clair, voilà un exemple: python exécute des lignes de code jusqu'à un print("quelque chose"). Là, il met le programme en pause pendant 5 secondes, puis il continue à exécuter le code qui suis une fois le temps écoulé.


          Cette version là te permettra de régler le temps de pause (en millisecondes dans l'exemple) :

          from time import sleep
          sleep(float(100) / 1000) #on fait une pause de x milisecondes (x/1000)
          
          • Partager sur Facebook
          • Partager sur Twitter
            1 août 2010 à 14:16:49

            Salut,
            Vraiment merci à vous trois d'avoir répondu à mes questions. Je vais étudier tout ça mais je pense que cela sera amplement suffisant pour m'aider à finir mon petit programme. Juste une petite question à fred1599, histoire d'être sûr d'avoir bien tout compris; Est-ce que le fait de changer la valeur d'un boléen permet de réévaluer la condition d'une boucle si le boléen se trouve être cette même condition ? Plus clairement(je sais mes questions sont rarement claires :p )dans l'exemple du code de fred1599, le fait de changer la variable "game" de "True" à "False" permet de quitter directement la boucle ?
            • Partager sur Facebook
            • Partager sur Twitter
            Benaitier Fabien
              1 août 2010 à 14:47:24

              Citation : fabben

              Salut,
              Vraiment merci à vous trois d'avoir répondu à mes questions. Je vais étudier tout ça mais je pense que cela sera amplement suffisant pour m'aider à finir mon petit programme. Juste une petite question à fred1599, histoire d'être sûr d'avoir bien tout compris; Est-ce que le fait de changer la valeur d'un boléen permet de réévaluer la condition d'une boucle si le boléen se trouve être cette même condition ? Plus clairement(je sais mes questions sont rarement claires :p )dans l'exemple du code de fred1599, le fait de changer la variable "game" de "True" à "False" permet de quitter directement la boucle ?


              Non, la condition est évalué à l'entrée de la boucle et au début de chaque tour seulement, c'est comme si tu avais :
              while 1:
                  if not game:
                      break # permet de quitter la boucle
                  ...
              

              Dans le cas du code Fred, si tu mets des choses après le if .. else elles seront exécutées même au moins une fois après que tu ai mis game à False.
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                1 août 2010 à 18:27:33

                Citation

                Plus clairement(je sais mes questions sont rarement claires )dans l'exemple du code de fred1599, le fait de changer la variable "game" de "True" à "False" permet de quitter directement la boucle ?



                Non comme dit Holt en fonction de ton programme je permet de sortir d'une boucle en changeant la variable booléenne de game.

                Mais ce n'est pas dans tout les cas!

                Le plus simple

                while 1:
                    print 'Do you wish start a new game ? Answer Y or N.' # pour ton print en version 3 c'est ok aussi
                    newgame=raw_input() # en version 3 c'est bien input()
                    if newgame=="Y" or newgame=="N":
                        break # on sort de la boucle, on continue le programme
                    else :
                        print "repondez par Y ou N"
                        continue # On revient au début de la boucle tant que pas Y ou N
                
                # traitement de la suite
                
                • Partager sur Facebook
                • Partager sur Twitter
                  2 août 2010 à 14:43:22

                  D'accord, je crois que je commence à comprendre. En fait une condition n'est pas évaluée en temps réelle dans une boucle mais bien au début de la boucle; le seul moyen d'en sortir est donc que la condition soit fausse ou d'utiliser break.

                  Merci encore à tous, je crois qu'à partir de là je me débrouillerai ! :soleil:
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Benaitier Fabien

                  petites questions

                  × 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