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

Python Discussion :

Pb boucle while (débutant sous python)


Sujet :

Python

  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Par défaut Pb boucle while (débutant sous python)
    Bonjour,

    je souhaite tester la boucle while et l'assertion : j'ai ce code ultra basique ci-dessous mais je ne comprends pas pourquoi il ne fonctionne pas : je reste continuellement dans ma boucle while, même si la réponse tapée est bien oui ou non :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    reponse = " "
     
    while reponse is not 'oui' or reponse is not 'non':
        reponse = input("Taper oui ou non ")
        try:
            assert reponse is 'oui' or reponse is 'non'
        except AssertionError:
            print("erreur !!")
     
    if reponse == 'oui':
        print("Oui bien enregistré")
    else:
        print("Non bien enregistré")
    Dans la while j'ai essayé avec juste "reponse is not 'oui'", idem dans l'assert, avec ou sans parenthèses, au final je reste toujours dans cette fichue boucle !!

    D'où vient le souci selon vous ?

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 180
    Par défaut
    Bonjour

    le problème vient de l'expression de ta condition de boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    reponse is not 'oui' or reponse is not 'non'
    Tu utilise un or, ce qui signifie que si la réponse est "oui", comme elle n'est forcément pas "non", tu reste
    dans la boucle et vice-versa
    Si tu reliais tes conditions par un and, il n'y aurait plus de problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    reponse is not 'oui' and reponse is not 'non'

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Par défaut
    Bonjour chticricri,

    ça ne fonctionne pas non plus

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 061
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 061
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    assert reponse in ('oui', 'non')
    ?

    EDIT:

    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
    reponse = " "
     
    condition = ('oui', 'non')
     
     
    while reponse not in condition:
        reponse = input("Taper oui ou non ")
        try:
            assert reponse in condition
        except AssertionError:
            print("erreur !!")
     
    if reponse == 'oui':
        print("Oui bien enregistré")
    else:
        print("Non bien enregistré")

  5. #5
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Par défaut
    Merci fred1599 impeccable !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. boucle "while" dans un sous-formulaire
    Par philebaucis dans le forum VBA Access
    Réponses: 4
    Dernier message: 02/04/2017, 06h15
  2. [Débutant]Arreter une boucle while.
    Par kobalt02 dans le forum LabVIEW
    Réponses: 7
    Dernier message: 03/07/2009, 10h25
  3. Boucle WHILE sous oracle
    Par GreenCard dans le forum SQL
    Réponses: 8
    Dernier message: 27/05/2009, 11h39
  4. Réponses: 12
    Dernier message: 18/11/2008, 21h42
  5. [débutant]Documentation? boucle "while"? Session?
    Par o151181 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 19/01/2004, 15h20

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