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 :

Debutant je bloque sur un del


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    sais pas trop
    Inscrit en
    Mars 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : sais pas trop

    Informations forums :
    Inscription : Mars 2015
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Debutant je bloque sur un del
    Bonjours,
    Je débute ou presque la programmation avec le livre de gerard swinnen "Apprendre a programmer avec python3".

    Un exercice consiste a afficher le nombre le plus grand d'une liste. C'est ok j'y arrive mais j'ai voulu pousser un poil en retriant cette liste en ordre croissant (à partir de la ligne 15).
    Et la je ne pige pas: (la ligne 33 (del(t1[k])))
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    t1=[32,5,28,98,3,54,27,46]
    max=0
    i=0
    k=0
    while i<len (t1):
        if t1[i]>max:
            max=t1[i]
            k=i
        i=i+1
    print ('Le plus grand nombre est',max, "et cest forcement le nombre nr",k)
    print ('la liste t1 au depart:',(t1))
    print ('la liste t1 contient',len(t1),'occurences de 0 à',len(t1)-1)
     
     
    #Trie la liste en ordre croissant
    t2=[]
    maxprov=0
    j=0
    k=0
    l=len (t1)                          #nombre d'ocurence t1 avant while 1
    while len (t2)<l:                   #while1
     
        #t1=[32,5,28,98,3,54,27,46]
        while j<len (t1):               #while2
            if t1[j]>maxprov:           #si le nombre j de t1 est superieur a maxprov
                maxprov=t1[j]           #maxprov prend la valeur du nombre j de t1
                print ('le j en while 2 est',j)#et on affiche l'emplacement du nombre
                k=j                     #k prend la valeur de cette emplacement (j)
            j=j+1                       #j est incrementé
     
        t2.append(maxprov)              #On ajoute ce nombre a la liste t2
        print('k est:',k,'et a comme valeur',maxprov)
        del(t1[k])                      #on enleve cette occurence de la liste t1
        k=0
        j=0                             #j reprend la valeur 0 pour definir le deuxieme plus grand   
     
    print ('j: ',j)
    print ('La liste réorganisée en ordre croissant:')      
    print (t2)      
    print('le reste de la liste t1',t1)   
    #________________________________________________________________________________________
    #                          Question:
    #Pourquoi la liste t1, qui pourtant se vide bien avec la ligne 33 (del(t1[k])), 
    #n'est pas pris en compte, mise a jour, dans les nouvelles while 1
    La liste t1 ce vide bien au fur a mesure des boucles mais elle ne semble pas prendre en compte les retrais dans les passage suivant. Du coup ma nouvelle liste, t2, contient 8 fois le nombre 98!
    Le plus grand nombre est 98 et cest forcement le nombre nr 3
    la liste t1 au depart: [32, 5, 28, 98, 3, 54, 27, 46]
    la liste t1 contient 8 occurences de 0 à 7
    le j en while 2 est 0
    le j en while 2 est 3
    k est: 3 et a comme valeur 98
    k est: 0 et a comme valeur 98
    k est: 0 et a comme valeur 98
    k est: 0 et a comme valeur 98
    k est: 0 et a comme valeur 98
    k est: 0 et a comme valeur 98
    k est: 0 et a comme valeur 98
    k est: 0 et a comme valeur 98
    j:  0
    La liste réorganisée en ordre croissant:
    [98, 98, 98, 98, 98, 98, 98, 98]
    le reste de la liste t1 []
    
    
    ------------------
    (program exited with code: 0)
    Press return to continue
    C'est, j'en suis sur, une erreur de grand débutant mais j’ai beau me creuser les méninges je ne pige pas!
    Merci

  2. #2
    Membre éprouvé
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Points : 926
    Points
    926
    Par défaut
    Citation Envoyé par VickingJack Voir le message
    Bonjours,
    Je débute ou presque la programmation avec le livre de gerard swinnen "Apprendre a programmer avec python3".

    Un exercice consiste a afficher le nombre le plus grand d'une liste. C'est ok j'y arrive mais j'ai voulu pousser un poil en retriant cette liste en ordre croissant (à partir de la ligne 15).
    Et la je ne pige pas: (la ligne 33 (del(t1[k])))
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    t1=[32,5,28,98,3,54,27,46]
    max=0
    i=0
    k=0
    while i<len (t1):
        if t1[i]>max:
            max=t1[i]
            k=i
        i=i+1
    print ('Le plus grand nombre est',max, "et cest forcement le nombre nr",k)
    print ('la liste t1 au depart:',(t1))
    print ('la liste t1 contient',len(t1),'occurences de 0 à',len(t1)-1)
     
     
    #Trie la liste en ordre croissant
    t2=[]
    maxprov=0
    j=0
    k=0
    l=len (t1)                          #nombre d'ocurence t1 avant while 1
    while len (t2)<l:                   #while1
     
        #t1=[32,5,28,98,3,54,27,46]
        while j<len (t1):               #while2
            if t1[j]>maxprov:           #si le nombre j de t1 est superieur a maxprov
                maxprov=t1[j]           #maxprov prend la valeur du nombre j de t1
                print ('le j en while 2 est',j)#et on affiche l'emplacement du nombre
                k=j                     #k prend la valeur de cette emplacement (j)
            j=j+1                       #j est incrementé
     
        t2.append(maxprov)              #On ajoute ce nombre a la liste t2
        print('k est:',k,'et a comme valeur',maxprov)
        del(t1[k])                      #on enleve cette occurence de la liste t1
        k=0
        j=0                             #j reprend la valeur 0 pour definir le deuxieme plus grand   
     
    print ('j: ',j)
    print ('La liste réorganisée en ordre croissant:')      
    print (t2)      
    print('le reste de la liste t1',t1)   
    #________________________________________________________________________________________
    #                          Question:
    #Pourquoi la liste t1, qui pourtant se vide bien avec la ligne 33 (del(t1[k])), 
    #n'est pas pris en compte, mise a jour, dans les nouvelles while 1
    Bonjour,
    La variable maxprov n'est pas remise à zéro entre chaque "boucle 2"
    ie: il suffit de rajouter sa remise à zéro ligne 22!

    Clodion

  3. #3
    Candidat au Club
    Homme Profil pro
    sais pas trop
    Inscrit en
    Mars 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : sais pas trop

    Informations forums :
    Inscription : Mars 2015
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Merci!
    Merci et désolé!
    Je croyais avoir vraiment tout vérifié et qu'il me manquais des éléments!
    Ça marche et je saurais plus qu'il faut encore mieux vérifié son raisonnement!
    Gracias!

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

Discussions similaires

  1. [Python 3.X] je debute vraiment et je suis bloqué sur un test de module - besoin d'aide
    Par fred213 dans le forum Général Python
    Réponses: 1
    Dernier message: 05/03/2015, 12h55
  2. [Debutant(e)]operation sur dates
    Par sUrTr dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 11/10/2004, 15h58
  3. [debutant] Gérer escape sur un JDialog
    Par debutant java dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 01/09/2004, 17h45
  4. [debutant STL] question sur les vectors
    Par killerjeff dans le forum SL & STL
    Réponses: 13
    Dernier message: 19/08/2004, 17h32
  5. [Débutant][String] Opérations sur une chaîne
    Par gandalf_le_blanc dans le forum Général Java
    Réponses: 8
    Dernier message: 08/06/2004, 11h59

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