Comment realiser de ne choisir que les lettres ou des chiffres [Résolu]

LIGuopeng 3 Messages postés jeudi 29 janvier 2015Date d'inscription 31 janvier 2015 Dernière intervention - 30 janv. 2015 à 22:07 - Dernière réponse :  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 !")



EDIT : Ajout des balises de code
Afficher la suite 

Votre réponse

10 réponses

hbouia 87 Messages postés mardi 30 juillet 2013Date d'inscription 3 avril 2018 Dernière intervention - 31 janv. 2015 à 18:14
0
Merci
# 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 !"
Commenter la réponse de hbouia
0
Merci
Merci ! ! A bientôt . ; )
Commenter la réponse de Li Guopeng
jordane45 22884 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 octobre 2018 Dernière intervention - 30 janv. 2015 à 23:12
-1
Merci
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 14274 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 18 octobre 2018 Dernière intervention > NHenry 14274 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 18 octobre 2018 Dernière intervention - 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)

Var=1 1=>faux 2=>true 3=>faux
Var=5 1=>true 2=>true 3=>true

Ta proposition des OR fait que tout est toujours à True, pour moi, le while est correct (ou tout du moins cohérent).
jordane45 22884 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 octobre 2018 Dernière intervention > NHenry 14274 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 18 octobre 2018 Dernière intervention - 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 3 Messages postés jeudi 29 janvier 2015Date d'inscription 31 janvier 2015 Dernière intervention > jordane45 22884 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 octobre 2018 Dernière intervention - 31 janv. 2015 à 15:07
Merci beaucoup,je l'ai trouve finalement!



#choisir un nombre (pas un lettre)
v=1
while v==1:
try:
reponse = input("choisir un int(pas une lettre)")
val = int(reponse )
v=0
except :
print("That's not an int!")
v=1


#choisir une lettre (pas un numbre)
v=1
while v==1:
try:
reponse = input("choisir un caracter(pas un nombre)")
val = int(reponse )
v=1
except :
print("That's a lettre!")
v=0
LIGuopeng 3 Messages postés jeudi 29 janvier 2015Date d'inscription 31 janvier 2015 Dernière intervention - 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!")
hbouia 87 Messages postés mardi 30 juillet 2013Date d'inscription 3 avril 2018 Dernière intervention - 31 janv. 2015 à 18:33
Ne pas bien sûr omettre les tests sur les input avec try et except ;)
Commenter la réponse de jordane45

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.