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 :

boucle while qui ne s'arrete pas à la lecture d'un zero


Sujet :

Python

  1. #1
    Membre habitué

    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2005
    Messages : 110
    Points : 173
    Points
    173
    Par défaut boucle while qui ne s'arrete pas à la lecture d'un zero
    Bonjour !!

    J'ai un nouveau petit souci, lorsque je lis mon fichier texte, je veux que la lecture s'arrete lorqu'il ya un zero , mais la boucle, boucle indéfiniment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    f = open(monfichier)
    while 1:
              t = f.readline()
              if t == "0"
                          break
    Mais ça boucle indéfiniment , Est-ce normal ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Tu n'aurais pas oublié le : après la condition de ton if !?

  3. #3
    Membre habitué

    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2005
    Messages : 110
    Points : 173
    Points
    173
    Par défaut
    Tu n'aurais pas oublié le : après la condition de ton if !?
    Salut ! non je ne l'ai pas oublié sur mon code, d'ailleur le code s'execute mais la boucle while, boucle indéfiniment

    Cordialemnt

  4. #4
    Invité
    Invité(e)
    Par défaut
    OK, comme tu l'avais oublié sur le code de ton 1° message, je me disais...
    Sinon, tu as essayé d'afficher ta ligne pour voir ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    f = open(monfichier)
    while 1:
        t = f.readline()
        print t
        if t == "0":
            break

  5. #5
    Membre éclairé
    Avatar de parp1
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    829
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Points : 872
    Points
    872
    Par défaut
    Tu as essayé cela?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    f = open(monfichier)
    t = f.readline()
    while t<>"0":
        t = f.readline()
        print t

  6. #6
    Membre habitué

    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2005
    Messages : 110
    Points : 173
    Points
    173
    Par défaut
    Re

    J'ai essayé ce que vous m'avais proposé et voici le resulta

    Pour la proposition de ADpierre: j'ai deja fais ce test et le s'affiche s'affiche le plus normalemnt du monde

    Pour la proposition de parp1 ça boucle indéfiniment !!

    C'est vraiment bizzare, Est ce que ça marche pour vos ? peut être qui c'est ma machine qui déconne

  7. #7
    Invité
    Invité(e)
    Par défaut
    Ah ben non mais c'est complètement logique en fait... Tu fais ton readline à chaque tour, mais tu testes jamais si tu as atteint la fin du fichier ou pas ! Du coup il continue a boucler indéfiniment...

    Pour faire ça, suffit de tester le retour de ton readline() : s'il renvoie "", alors tu as atteint la fin de ton fichier...!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #! /usr/bin/python
     
    monfichier = "dvp.txt"
    f = open(monfichier)
     
    while 1 and t != "":
        t = f.readline()
        print t
     
        if t == "0":
            break
    Par contre ta condition de test pour savoir si ta ligne vaut 0 va pas fonctionner car readline() va aussi renvoyer le caractère de retour ligne je crois...

  8. #8
    Membre expérimenté Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Points : 1 728
    Points
    1 728
    Par défaut
    je veux que la lecture s'arrete lorqu'il ya un zero
    Essaye de faire:

  9. #9
    Membre habitué

    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2005
    Messages : 110
    Points : 173
    Points
    173
    Par défaut
    Salut !!

    C'est bon j'ai pu résoudre le problème, il fallait simplement tester avec '0\n', au lieu de '0', car comme tu l'a dis pierre
    readline() va aussi renvoyer le caractère de retour ligne
    !!
    Pour ton exemple il marche , enfin la boucle while ne boucle pas indéfinement, mais moi ce que je voulais c'est qu'elle s'arrete quand le programme lit un zero dans le fichier texte;
    voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    f = open('C:/Documents and Settings/Administrateur/Bureau/nd.txt')
            while 1:
    	t = f.readline()
    	print t
    	if t == "0\n":
    		break
    Merci à tous !!

  10. #10
    Membre habitué

    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2005
    Messages : 110
    Points : 173
    Points
    173
    Par défaut
    Salut Pacificator !!

    Ton idée marche nickel, et c'est plus propore

    Merci

  11. #11
    Invité
    Invité(e)
    Par défaut
    Euh, avec "O in t", ça va s'arrêter dès que la ligne lue contiendra un 0... non ?

  12. #12
    Membre habitué

    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2005
    Messages : 110
    Points : 173
    Points
    173
    Par défaut
    Euh, avec "O in t", ça va s'arrêter dès que la ligne lue contiendra un 0... non ?
    Oui exactement

    Cordialement

  13. #13
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par malikoo
    Oui exactement

    Cordialement
    Eh bien je croyais que tu voulais arrêter ta boucle quand tu rencontrais une ligne formée seulement d'un 0, c'est moi qui avait mal compris alors ??? Ou alors tu ne peux avoir de 0 dans ton fichier que seul sur une ligne ?

  14. #14
    Membre habitué

    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2005
    Messages : 110
    Points : 173
    Points
    173
    Par défaut
    Salut Pierre

    Oui la ligne sur laquelle je veux m'arreter ne contient qu'un zero !!

    cordialemnt

  15. #15
    Invité
    Invité(e)
    Par défaut
    Eh ben du coup la solution qui t'a été donnée ne correspond pas à ce que tu souhaites ? Parce que
    si tu as une ligne quelconque qui contient un zéro (genre "gnagna0gnagna"), ça va sortir de ta boucle alors que la ligne n'est pas "0"...

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

Discussions similaires

  1. [TThread] while qui ne s'arrete pas
    Par Bigmlb dans le forum C++Builder
    Réponses: 3
    Dernier message: 09/06/2014, 15h02
  2. [PHP 5.2] Boucle While qui ne s'arrete pas
    Par Pierrea4564 dans le forum Langage
    Réponses: 3
    Dernier message: 18/11/2011, 08h59
  3. Condition while qui ne s'arrete pas
    Par Drone dans le forum VBA Access
    Réponses: 5
    Dernier message: 16/05/2010, 19h48
  4. Boucle qui ne s'arrete pas
    Par pierrot67 dans le forum Bases de données
    Réponses: 4
    Dernier message: 29/03/2007, 10h19
  5. [Tableaux] boucle while qui ne boucle pas comme je veux
    Par oceane751 dans le forum Langage
    Réponses: 5
    Dernier message: 05/06/2006, 00h42

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