IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation multimédia/Jeux Python Discussion :

Boucle qui foire,a n'y plus rien comprendre


Sujet :

Programmation multimédia/Jeux Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 15
    Par défaut Boucle qui foire,a n'y plus rien comprendre
    Bonjour a tous, je débute dans la programmation python et mon code bloque...
    N'importe quel nombre rentré ne fais rien, et relance la phrase qui demande de rentrer un nombre...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    print( "Choisissez un nombre de 1 à 3 (ou zéro pour terminer) ")
    a = input() 
    while a != 0:
         if a == 1: 
              print( "Vous avez choisi un :"), 
              print( "le premier, l'unique, l'unité ...") 
         elif a == 2: 
              print( "Vous préférez le deux :"), 
              print( "la paire, le couple, le duo ...")
         elif a == 3: 
              print( "Vous optez pour le plus grand des trois :")
              print( "le trio, la trinité, le triplet ...")
         else : 
              print( "Un nombre entre UN et TROIS, s.v.p.")
              print( "Choisissez un nombre de 1 à 3 (ou zéro pour terminer) ")
              a = input() 
    print( "Vous avez entré zéro :") 
    print( "L'exercice est donc terminé.")

  2. #2
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    C'est normal, le "a = input()" final n'est exécuté qu'à l'intérieur du dernier else.

    Il suffit de le mettre au même niveau que else pour qu'il soit exécuté à chaque boucle.

    Tyrtamos

  3. #3
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 15
    Par défaut
    Merci pour votre réponse mais...je viens de le mettre au niveau du else et rien n'a changé...

  4. #4
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    #!/usr/bin/env python
    # -*- coding:Utf-8 -*-
     
     
     
    print "Choisissez un nombre de 1 à 3 (ou zéro pour terminer)"
    a = input() # Initialise la variable a
     
    while a and a < 4: # Si a existe et a < 4.
        if a == 1: 
            print "Vous avez choisi un :" 
            print "le premier, l'unique, l'unité ..." 
        elif a == 2:
            print "Vous préférez le deux :"
            print "la paire, le couple, le duo ..."
        elif a == 3:
            print "Vous optez pour le plus grand des trois :"
            print "le trio, la trinité, le triplet ..."
        # Attention au else qui est un fourretout.
        print "Un nombre entre UN et TROIS, s.v.p."
        a = input() # Donc a existe et 0 < a < 4 on en redemande.
     
    print "Vous avez entré zéro :"
    print "L'exercice est donc terminé."
    @+

    Ps : Attention, en python l'indentation c'est 4 espaces. Un copier/coller de ton code montre des indentations à 5.

  5. #5
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 15
    Par défaut
    Traceback (most recent call last):
    File "C:/Documents and Settings/Administrateur/Bureau/script python/00010", line 7, in <module>
    while a and a < 4:
    TypeError: unorderable types: str() < int()
    arf
    Bon je suis sur idle 3.1.1 mais je suis repassé sur idle 2.5.4 et la sa marche...Donc merci beaucoup pour vos réponses

  6. #6
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Sinon par rapport a ceci :

    Citation Envoyé par pridzi Voir le message
    N'importe quel nombre rentré ne fais rien, et relance la phrase qui demande de rentrer un nombre...
    Comme je ne sais pas si c'est vraiment ta demande.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    #!/usr/bin/env python
    # -*- coding:Utf-8 -*-
     
     
     
    print "Choisissez un nombre de 1 à 3 (ou zéro pour terminer)"
    a = input() # Initialise la variable a
     
    while not  -1 < a < 4:
        print "Un nombre entre UN et TROIS, s.v.p."
        a = input()
     
    if a == 1: 
        print "Vous avez choisi un :" 
        print "le premier, l'unique, l'unité ..." 
    elif a == 2:
        print "Vous préférez le deux :"
        print "la paire, le couple, le duo ..."
    elif a == 3:
        print "Vous optez pour le plus grand des trois :"
        print "le trio, la trinité, le triplet ..."
    elif a == 0:
        print "Vous avez entré zéro :"
        print "L'exercice est donc terminé."

  7. #7
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Par défaut
    bonjour,

    il ne s'agit pas juste de convertir en entier le résultat retourné par input ?

Discussions similaires

  1. Job qui ne fait plus rien
    Par Syphys dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 30/08/2010, 16h42
  2. Fonction dans une boucle qui ne renvoie rien
    Par blueice dans le forum Langage
    Réponses: 9
    Dernier message: 16/08/2008, 08h46
  3. Une boucle qui se finira plus rapidement
    Par Topeur dans le forum Bibliothèque standard
    Réponses: 7
    Dernier message: 12/04/2008, 15h45
  4. [problème Free]boucle qui ne marche plus
    Par xender dans le forum Requêtes
    Réponses: 1
    Dernier message: 16/12/2006, 14h43
  5. Root qui ne peux plus rien faire :'(
    Par Smortex dans le forum Administration
    Réponses: 2
    Dernier message: 27/09/2004, 20h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo