LIGuopeng
Messages postés3Date d'inscriptionjeudi 29 janvier 2015StatutMembreDernière intervention31 janvier 2015
-
Modifié par jordane45 le 30/01/2015 à 23:05
Li Guopeng -
1 févr. 2015 à 12:07
bonjour a tous
j'ai une question vraiment interessante et importante sur python 2.6
Est ce que on peut m'expliquer,si vous plait!
les programme ci-dessus qui marche pas
comment realiser de ne choisir que les lettres ou des chiffres?
la premier programme si on choisi un caractere(une lettre) il affiche toujour le meme chose!
la seconde si on choisi un caractere(une lettre) il affiche erreur
#Vérifier qu'un nombre est bien donné :
reponseEstUnNombre = False
while not reponseEstUnNombre :
reponse = input()
try :
reponse = eval(reponse)
reponseEstUnNombre = True
except :
print("Vous devriez donner un nombre...")
#Laisser le choix de la difficulté à l'utilisateur :
difficulte = input()
while (difficulte != 1 and difficulte != 2 and
difficulte != 3 and difficulte != 4) :
print("Veuillez entrer quelque chose de correct !")
difficulte = input()
c'est une partie de TP un jeu de JUSTE PRIX ci-dessus le programme complet(ca marche pas )
#Afficher l'interface :
print("-----------------\n" +
"| Le Juste Prix |\n" +
"-----------------\n" +
"Choix de la difficulté :\n" +
"1 - Entre 0 et 100\n" +
"2 - Entre 0 et 1000\n" +
"3 - Entre 0 et 10000\n" +
"4 - Entre 0 et 100000")
#Laisser le choix de la difficulté à l'utilisateur :
difficulte = input()
while (difficulte != 1 and difficulte != 2 and
difficulte != 3 and difficulte != 4) :
print("Veuillez entrer quelque chose de correct !")
difficulte = input()
#Initialiser les variables :
nbEssais = 0
reponse = -1
#Générer un nombre aléatoire :
if difficulte == 1 :
aDeviner = randint(0, 100)
elif difficulte == 2 :
aDeviner = randint(0, 1000)
elif difficulte == 3 :
aDeviner = randint(0, 10000)
else :
aDeviner = randint(0, 100000)
#Indiquer que le jeu à commencé :
print("Le jeu commence, alors combien ?")
#Boucle principale :
while reponse != aDeviner :
nbEssais += 1
#Vérifier qu'un nombre est bien donné :
reponseEstUnNombre = False
while not reponseEstUnNombre :
reponse = input()
try :
reponse = eval(reponse)
reponseEstUnNombre = True
except :
print("Vous devriez donner un nombre...")
#Dire si c'est plus ou moins :
if reponse < aDeviner :
print("C'est plus !")
elif reponse > aDeviner :
print("C'est moins !")
#Terminer le jeu :
print("Bravo, vous avez trouvé la bonne réponse après",nbEssais, "essais !")
hbouia
Messages postés112Date d'inscriptionmardi 30 juillet 2013StatutMembreDernière intervention22 novembre 202212 31 janv. 2015 à 18:14
# Vous pourriez peut-être simplifier votre code comme suit (Python 2.7) :
from random import randint
#Afficher l'interface :
print("-----------------\n" +
"| Le Juste Prix |\n" +
"-----------------\n" +
u"Choix de la difficulté :\n" +
"1 - Entre 0 et 100\n" +
"2 - Entre 0 et 1000\n" +
"3 - Entre 0 et 10000\n" +
"4 - Entre 0 et 100000")
#Laisser le choix de la difficulté à l'utilisateur :
difficulte = input()
while difficulte not in [1,2,3,4]:
print u"Veuillez entrer quelque chose de correct !"
difficulte = input()
#Initialiser les variables :
nbEssais = 0
reponse = -1
#Générer un nombre aléatoire :
aDeviner = randint(0, [0,100,1000,10000,100000][difficulte])
print("Le jeu commence, alors combien ?")
#Boucle principale :
while reponse != aDeviner :
nbEssais += 1
reponse = int(input())
if reponse < aDeviner :
print("C'est plus !")
elif reponse > aDeviner :
print("C'est moins !")
#Terminer le jeu :
print u"Bravo, vous avez trouvé la bonne réponse après",nbEssais, "essais !"
jordane45
Messages postés37864Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention 7 décembre 2023343 30 janv. 2015 à 23:12
Bonjour,
Je detecte déjà un souci sur ce code :
while (difficulte != 1 and difficulte != 2 and
difficulte != 3 and difficulte != 4) :
En gros.. tu boucles tant que le chiffre n'est pas égale à 1 ET à 2 ET à 3 .. ET à 4 .....
Donc.. tu boucleras toujours.......
Pour y remédier.. remplace tes AND par des OR
Et pour ce qui est de ton premier code ... eval ne te permettra pas de vérifier si c'est un nombre ou pas.... relis donc la doc concernant cette fonction !
A la rigueur, tu peux utiliser quelque chose du genre:
try:
reponse = input()
val = int(reponse )
except ValueError:
print("That's not an int!")
NHenry
Messages postés15090Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention 6 novembre 2023158 Modifié par NHenry le 30/01/2015 à 23:22
"Pour y remédier.. remplace tes AND par des OR "
En gros.. tu boucles tant que le chiffre n'est pas égale à 1 OU à 2 OU à 3 .. OU à 4 .....
Pareil, sauf si j'ai mal compris. (si ==1 => !=2)
Il faudrait plutôt tester l'égalité que la différence.
jordane45
Messages postés37864Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention 7 décembre 2023343
>
NHenry
Messages postés15090Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention 6 novembre 2023 Modifié par jordane45 le 30/01/2015 à 23:35
Il faudrait plutôt tester l'égalité que la différence.
Le but de la boucle while est de répéter certaines instructions tant qu'une condition est respectée.
Donc tant que le nombre sélectionné est différent de 1 ou de 2 ou de 3 ou de 4.. alors...il demande à l'utilisateur de saisir un nombre.... je ne vois pas comment tester l'égalité au lieu
de la différence pourrait fonctionner dans ce cas...
Et c'est bien pour ça qu'il faut utiliser des OU(OR) à la place des ET (AND) .... car sinon... même s'il met un chiffre correcte ( le 1 par exemple...) il sera tout de même faux dans les autres cas.....
NHenry
Messages postés15090Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention 6 novembre 2023158
>
NHenry
Messages postés15090Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention 6 novembre 2023 31 janv. 2015 à 13:36
Après une bonne nuit, j'ai fais un test :
1) Var!=1 AND Var!=2 AND Var!=3
2) Var!=1 OR Var!=2 OR Var!=3
3) NOT(Var==1 OR Var==2 OR Var==3)
Ta proposition des OR fait que tout est toujours à True, pour moi, le while est correct (ou tout du moins cohérent).
jordane45
Messages postés37864Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention 7 décembre 2023343
>
NHenry
Messages postés15090Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention 6 novembre 2023 31 janv. 2015 à 14:38
Hello, Tu as raisons,
j'ai testé aussi ce matin (tu m'avais mis le doute....) et me suis remémoré mes cours de logique combinatoire.....
Donc en effet ... la combinaison des AND est en effet la bonne réponse.
Ca confirme que je ne dois plus répondre après 22h... sinon je dis des Co****ies ;-)
LIGuopeng
Messages postés3Date d'inscriptionjeudi 29 janvier 2015StatutMembreDernière intervention31 janvier 2015 31 janv. 2015 à 14:49
Ce programme marche bien!sauf que il faut mettre dans un boucle!
Quand entree est int,il doit sortir la boucle, sinon il va continuer choisir
je n'ai pas encore trouve.
try:
reponse = input()
val = int(reponse )
except :
print("That's not an int!")