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 :

aide construction d'une boucle


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Curieux
    Inscrit en
    Avril 2020
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2020
    Messages : 114
    Par défaut aide construction d'une boucle
    Bonjour,



    Je cherche à faire un saut dans l’incrémentation d'une boucle quand ma condition est remplie. pour l'instant j'ai ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def make_paliers(values):
        sens = 0.025
        nb_values = len(values)
        values_sep = []#Donne brute avec identification des étages
        for i in range(nb_values-1):   
            if  abs(values[i+1]-values[i])>sens and abs(values[i]-values[i+1])>sens:        
                values_sep.append(-2.0)              
            else:
                values_sep.append(values[i])                
        return values_sep

    donc là à chaque fois que ma valeur remplit les conditions dans values_sep j'écris -2, c'est bien ce que je souhaite. Mais comment à partir de la faire en sorte que les x prochaines valeurs soient zappées. Pouvez-vous me donner une piste pour trouver là ou une solution.
    Merci

  2. #2
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2020
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2020
    Messages : 20
    Par défaut
    tu peux faire une boucle while avec un incrément de i classique

    while i < 10: par exemple

    et quand tu arrives à ta valeur tu montes i d'un coup
    par exemple si quand i = 3 c'est bon, tu mets i = 7 et tu as sauté les valeur 4 5 6

    ça irait ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Curieux
    Inscrit en
    Avril 2020
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2020
    Messages : 114
    Par défaut
    du genre, dans une autre fonction corrective :
    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
    def clean_values(values):
        clean_values=[]
        n=len(values)
        print('nettoyage de',n,'valeurs.')
        for i in range(200):
            if values[i]==-2:
                clean_values.append(values[i])
                a=0
                while a<10:
                    a=+1
                    i=i+a
                    if a==10:
                        return i
            else:
                clean_values.append(values[i])
        return clean_values
    mais dans ce cas la j'ai c'est comme si juste après le clean_values.append du if je met i=i+10, j'ai l'impression que cela ne touche pas au i du for, et la je me dit que je sais pas en fait ^^

  4. #4
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2020
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2020
    Messages : 20
    Par défaut
    je ne touche jamais au i d'un for

    si j'ai besoin de le changer je fais un while avec un i+=1 dedans

  5. #5
    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
    non simplement en remplacant le for par un while. Car toute boucle for, est un while déguisé, dans lequel l'initialisation de la variable de boucle, et l'incrément de la variable de boucle se font tous seul automatiquement.

    Je rappelle que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i in range(10) :
         print(i)
    équivaut à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    i = 0
    while i<10 :
         print(i)
         i+=1
    Donc avec ça en tête, on quand on traduit ce que fraborak dit, cela donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    i=0
    while i < 10:
        print(i)
        if i == 3 :
            i += 4
        else :
            i+=1

  6. #6
    Membre confirmé
    Homme Profil pro
    Curieux
    Inscrit en
    Avril 2020
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2020
    Messages : 114
    Par défaut
    bon avec un while un peu plus correct... (pas de coup de 12 please)

    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
    values = [1,2,3,4,5,6,7,8,-2,1,2,3,4,5,6,7,8,23,10,11,12,13]
    def clean_values(values):
        clean_values=[]
        n=len(values)
        print('nettoyage de',n,'valeurs.')
        for i in range(n):
            if values[i]==-2:
                clean_values.append(values[i])
                a=0
                while a<=10:
                    i+=1
                    a=a+1
            else:
                clean_values.append(values[i])
        return clean_values
     
    a=clean_values(values)
    print(values)
    print(a)
    Le i du for n'est pas touché, dois je rajouter un compteur en global ?

  7. #7
    Membre confirmé
    Homme Profil pro
    Curieux
    Inscrit en
    Avril 2020
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2020
    Messages : 114
    Par défaut
    Ok, en remplacent la boucle for par while
    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
    values = [1,2,3,4,5,6,7,8,-2,1,2,3,4,5,6,7,8,23,10,11,12,13]
    def clean_values(values):
        clean_values=[]
        n=len(values)
        print('nettoyage de',n,'valeurs.')
        i=0
        while i<=16:
            if values[i]==-2 or i<n:
                clean_values.append(values[i])
                i+=4
            else:
                clean_values.append(values[i])
                i+=1
        return clean_values
     
    a=clean_values(values)
    c'est bien ce que je souhaitais, faire. Il me faut maintenant gérer la taille de l'objet que je donne à cette fonction differement et ou corriger la fin de l'objet values.

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

Discussions similaires

  1. [MySQL] Besoin d'aide pour faire une boucle
    Par plex dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 15/04/2008, 13h47
  2. Besoin d'aide construction d'une requête
    Par frankiboy dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 10/03/2008, 19h25
  3. Aide pour créer une boucle
    Par laroche1 dans le forum MATLAB
    Réponses: 2
    Dernier message: 04/12/2007, 15h51
  4. Réponses: 4
    Dernier message: 18/11/2006, 22h58
  5. [VBA-E]besoin d'aide pour faire une boucle
    Par mikazounette dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/04/2006, 14h04

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