cs_O_connor
Messages postés1Date d'inscriptionmercredi 2 juin 2004StatutMembreDernière intervention 1 décembre 2008
-
1 déc. 2008 à 11:42
aera group
Messages postés382Date d'inscriptionmercredi 23 août 2006StatutMembreDernière intervention 8 novembre 2010
-
7 déc. 2008 à 12:30
Bonjour à toutes et à tous,
Je poste un ce topic car voilà deux jours que je bloque sur ma petite application que j'essaie de réaliser avec une GUI.
Ce programme le fameux jeu où l'utilisateur doit trouver un nombre caché.
Mon problème est le suivant : a chaque fois que j'entre un nombre, le label m'indiquant que le nombre à trouver est plus petit. Or dans mon application, un check est fait afin de savoir si le nombre entré est plus petit, plus grand ou égal au nombre caché.
On dirait que mes "if" ne fonctionnent pas.
Mon code :
#_*_ coding:utf-8 _*_
from Tkinter import *
def press():
nombre_cache = 42
choix=entre.get()
if nombre_cache > choix :
text3=Label(fen1, text="Le nombre caché est plus grand que %s !" % (choix))
text3.pack()
if nombre_cache < choix :
text3=Label(fen1, text="Le nombre caché est plus petit que %s !" % (choix))
text3.pack()
else :
text3=Label(fen1, text="Bravo, le nombre caché était : %s !" % (choix))
text3.pack()
fen1=Tk()
text1=Label(fen1,text="Essayez de trouver le nombre caché" , fg="red")
text1.pack()
text2=Label(fen1,text="Veuillez entrer un nombre")
text2.pack()
entre=Entry(fen1)
bou1=Button(fen1,text="Entrer",command=press)
entre.pack()
bou1.pack()
fen1.mainloop()
aera group
Messages postés382Date d'inscriptionmercredi 23 août 2006StatutMembreDernière intervention 8 novembre 201018 7 déc. 2008 à 12:30
Bonjour.
[auteur/FRED1599/1136696.aspx fred1599]pense que le problème vient de "nombre_cache" et qu'il faut le placer en dehors de la fonction : ça n'a rien avoir avec l'erreur.
De même press() est appeler dans la classe Button() de Tkinter.
Le problème est que "entre.get()" envoie une chaine de caractères et non un nombre. Dans tes test tu compares donc un nombre et des lettres (ce qui pose un problème). La fonction int() de Python transforme une chaine de caractères (où tous les caractères sont des nombres) en un entier (pour transformer en un décimal il faut utiliser float() et pour transformer un nombre en chaine de caractère c'est str()). Met donc un int() dans la ligne choix.
Maintenant fesons un test. Je rentre 43 ! La réponse est "Le nombre caché est plus petit que 43 !". Jusque la tout va bien. Maintenant je met 5 et la rien ne vas plus, j'ai deux réponse : "Le nombre caché est plus grand que 5 !" ça ca va mais la deuxième : "Bravo, le nombre caché était : 5 !"
Gros problème en fait le deuxième test étant négatif le else rentre en jeu (alors qu'il ne devrais pas). Deux solutions, remplacer le else pas un test d'égalité ou mettre en elif au deuième test.
______
Aéra