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 :

Problème de while


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2021
    Messages : 9
    Points : 6
    Points
    6
    Par défaut Problème de while
    Bonsoir,
    j'aurais besoin de savoir pourquoi lorsque j'exécute ceci, si j'écris Raymond ou B, le script se termine comme prévu mais si j'écris Simon ou A, le while recommence à l'infini alors test est bel et bien égal a Simon.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     test=input()
        if test in ["Simon","A"]:
            test="Simon"
        if test in ["Raymond","B"]:
            test="Raimond"
        while test not in ["Simon","Raymond"]:
            print("Les personnages disponibles sont : " + str(personnages))
            test = input()
            if test in ["Simon", "A"]:
                test = "Simon"
            if test in ["Raymond", "B"]:
                test = "Raymond"

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 428
    Points : 37 010
    Points
    37 010
    Par défaut
    Salut,

    ligne 8 remplacez test = input() par test = 'Simon'.
    Si çà marche, c'est que le problème n'est pas dans le code que vous montrez (qui par ailleurs doit être modifié pour "reproduire").

    - W

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2021
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Bonjour !

    J'ai donc remplacé la ligne 8 et ça fait une boucle, ça n'est toujours pas fonctionnel, faudrait-il que j'envoie le code en entier ?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 428
    Points : 37 010
    Points
    37 010
    Par défaut
    Salut,

    Citation Envoyé par krepiti Voir le message
    J'ai donc remplacé la ligne 8 et ça fait une boucle, ça n'est toujours pas fonctionnel, faudrait-il que j'envoie le code en entier ?
    On ne fait pas de la reprise de code écrit pas des débutants, on essaie de leur apprendre à programmer.

    Essayez de créer un nouveau code qui ne comprend que le minimum pour faire fonctionner la boucle.
    Ca devrait ressembler à çà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    test="Z"
    while test not in ["Simon","Raymond"]:
        print("Les personnages disponibles sont : ")
        test = 'Simon'
        if test in ["Simon", "A"]:
            test = "Simon"
        if test in ["Raymond", "B"]:
            test = "Raymond"
    qui logiquement ne devrait pas boucler...

    note: si ce code boucle chez vous, c'est que vous ne programmez pas avec le même Python que tout le monde (et on ne pourra pas vous aider).

    Reste à ajouter du code autour pour reproduire le problème (et prendre le temps de comprendre ce que vous avez écrit pour en arriver là).

    - W

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 735
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 735
    Points : 31 060
    Points
    31 060
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par krepiti Voir le message
    si j'écris Raymond ou B, le script se termine comme prévu mais si j'écris Simon ou A, le while recommence à l'infini alors test est bel et bien égal a Simon.
    Le code que tu as posté et que j'ai repris à l'identique (y compris le premier input() inutile) ne produit pas ce comportement. Quand moi j'écris Simon, le programme se termine aussi comme prévu.
    Nom : VirtualBox_Debian10_64b_05_08_2021_14_35_43.png
Affichages : 83
Taille : 110,2 Ko

    Citation Envoyé par krepiti Voir le message
    j'aurais besoin de savoir pourquoi
    Bah, tu aurais mis un simple print() et tu aurais su.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2021
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    On ne fait pas de la reprise de code écrit pas des débutants, on essaie de leur apprendre à programmer.

    Essayez de créer un nouveau code qui ne comprend que le minimum pour faire fonctionner la boucle.
    Ca devrait ressembler à çà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    test="Z"
    while test not in ["Simon","Raymond"]:
        print("Les personnages disponibles sont : ")
        test = 'Simon'
        if test in ["Simon", "A"]:
            test = "Simon"
        if test in ["Raymond", "B"]:
            test = "Raymond"
    qui logiquement ne devrait pas boucler...

    note: si ce code boucle chez vous, c'est que vous ne programmez pas avec le même Python que tout le monde (et on ne pourra pas vous aider).

    Reste à ajouter du code autour pour reproduire le problème (et prendre le temps de comprendre ce que vous avez écrit pour en arriver là).

    - W
    j'avais fait ça au début et que ça ne fonctionnait pas, j'ai python en version 3.9.6, c'est la dernière version pourtant

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 428
    Points : 37 010
    Points
    37 010
    Par défaut
    Citation Envoyé par krepiti Voir le message
    j'avais fait ça au début et que ça ne fonctionnait pas, j'ai python en version 3.9.6, c'est la dernière version pourtant
    Soyez un peu logique, si le code que j'ai posté fonctionne chez vous, c'est que vous utilisez un Python qui fonctionne raisonnablement bien...

    - W

  8. #8
    Membre régulier
    Homme Profil pro
    Amateur débutant
    Inscrit en
    Décembre 2019
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Amateur débutant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 88
    Points : 104
    Points
    104
    Par défaut
    Citation Envoyé par krepiti Voir le message
    Bonsoir,
    j'aurais besoin de savoir pourquoi lorsque j'exécute ceci, si j'écris Raymond ou B, le script se termine comme prévu mais si j'écris Simon ou A, le while recommence à l'infini alors test est bel et bien égal a Simon.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     test=input()
        if test in ["Simon","A"]:
            test="Simon"
        if test in ["Raymond","B"]:
            test="Raimond"
        while test not in ["Simon","Raymond"]:
            print("Les personnages disponibles sont : " + str(personnages))
            test = input()
            if test in ["Simon", "A"]:
                test = "Simon"
            if test in ["Raymond", "B"]:
                test = "Raymond"
    J'ai ni testé ni trop regardé..
    mais je vois dans votre code qu'il y a des "Raymond" avec "y " et un "Raimond" avec "i"..
    Est ce que ce peut être cette coquille qui provoque le comportement inattendu?

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 428
    Points : 37 010
    Points
    37 010
    Par défaut
    Citation Envoyé par Jma06 Voir le message
    Est ce que ce peut être cette coquille qui provoque le comportement inattendu?
    non ça c'est ce qui fait que la condition n'est pas vraie et qu'on entre dans le while.

    - W

Discussions similaires

  1. [MySQL] problème avec while
    Par dudu134 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 13/11/2007, 09h51
  2. [MySQL] Problème avec while
    Par Whinze dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 03/06/2007, 18h33
  3. [MySQL] Problème boucle WHILE
    Par Adlack dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/02/2007, 20h30
  4. Problème boucle while et evenement
    Par tse_tilky_moje_imja dans le forum Général Python
    Réponses: 2
    Dernier message: 30/03/2006, 19h11
  5. [Tableaux] problème avec while
    Par zimotep dans le forum Langage
    Réponses: 3
    Dernier message: 11/09/2005, 11h30

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