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 :

La boucle while combinée à if


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Professeur de guitare
    Inscrit en
    Mai 2017
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur de guitare

    Informations forums :
    Inscription : Mai 2017
    Messages : 61
    Par défaut La boucle while combinée à if
    Bonjour, je suis débutant et tente de me faire des mini programmes pour comprendre , m'améliorer :
    Je voudrais mieux comprendre comment et pourquoi utiliser cette boucle while.

    Ici j'ai volontairement voulu éviter la boucle for
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    x=67
    while x >= 67 and x <= 128:
        if x%4==0:
             print(x)
    Pourquoi rien ne s'affiche, pas de message d'erreur ? Problème de bloc et sous bloc ?


    D'incrémentation ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    x=67
    while x >= 67 and x <= 128:
        if x%4==0:
             print(x)
             x=x+1
    Merci de éclairages

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut
    Bonjour, dans les 2 cas pour la même raison, x ne change pas de valeur :
    dans le premier code, il n'est tout simplement pas modifier donc x= 67 , ce qui n'est pas multiple de 4 donc rien ne s'affiche.
    Au passage, c'est jolie boucle infinie


    Dans le second code, tu modifies x seulement lorsque sa valeur est multiple de 4; ce qui n'est pas le cas de 67.
    Attention au indentations; elles changent tout en python
    Évidemment, boucle infinie également

  3. #3
    Membre émérite

    Homme Profil pro
    linux, pascal, HTML
    Inscrit en
    Mars 2002
    Messages
    649
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : linux, pascal, HTML
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2002
    Messages : 649
    Billets dans le blog
    1
    Par défaut
    Attention à l'indentation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    x=67
    while x >= 67 and x <= 128:
        if x%4==0:
             print(x)
        x=x+1
    variante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    x=67
    while x >= 67 and x <= 128:
        if x%4==0:
             print(x)
        x+=1

  4. #4
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Pour bien comprendre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    x=67
    while x >= 67 and x <= 128:
        print("x : ", x, end = " ; ")
        if x%4==0:
             print("-> divisible par 4 ; ")
        x=x+1

  5. #5
    Membre averti
    Homme Profil pro
    Professeur de guitare
    Inscrit en
    Mai 2017
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur de guitare

    Informations forums :
    Inscription : Mai 2017
    Messages : 61
    Par défaut
    Ce qui n'est pas clair c'est cette histoire de bloc qui vient s'aligner sous la condition if .

    En fait, si j'ai bien saisi, cela consiste à reprendre la variable x une fois qu'un bloc s'est appliqué sur x ?

  6. #6
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Sans cette ligne, x reste toujours à sa valeur initiale, il n'y a pas de raison que x soit modifié.
    Pour l'indentation, c'est un bon tuto qu'il faut prendre.

  7. #7
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Il vous faut revoir l'indentation en python. Faites des recherches sur la toile et lisez attentivement ce que vous trouverez; car la plupart de vos questions viennent de problème d'indentation. En python il n'y a pas de délimiteurs de bloc (comme des parenthèses ou des accolades), à la place tout est géré par l'indentation !

    Ensuite si vous savez faire un exo avec un boucle for, alors vous savez le faire avec un while. Car un for ce n'est ni plus ni moins qu'un while avec initialisation automatique de l'indice de boucle (souvent nommé i) et incrément automatique à la fin de chaque itération.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i in range(10,20):
        print(i)
    est équivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    i=10
    while 10 <= i < 20 :
        print(i)
        i = i+1   #### Cette instruction est DANS le bloc while

  8. #8
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 970
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 970
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while True: 
        ...
        if <cond>: 
            break

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

Discussions similaires

  1. Boucle While et fonction Require combinées
    Par Oliix dans le forum Langage
    Réponses: 14
    Dernier message: 30/05/2013, 09h43
  2. multiples array dans un, combiner avec boucle while
    Par leymiris dans le forum Langage
    Réponses: 2
    Dernier message: 27/07/2010, 16h19
  3. boucle while et post incrémentation
    Par tut dans le forum C++
    Réponses: 7
    Dernier message: 10/12/2004, 17h24
  4. [MFC] Dialog dans une boucle while
    Par oxor3 dans le forum MFC
    Réponses: 5
    Dernier message: 23/04/2004, 22h51
  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