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à ) 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 ), 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 !
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é.
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 :
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)
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 )dans l'exemple du code de fred1599, le fait de changer la variable "game" de "True" à "False" permet de quitter directement la boucle ?
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 )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.
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
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 !
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.