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 liste affichage des deux plus grands nombres


Sujet :

Python

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 4
    Par défaut problème liste affichage des deux plus grands nombres
    Bonjour,

    En quête de gloire devant mon ordinateur et mon pti clavier avec une feuille blanche devant moi, j'essaye d'afficher les 2 plus grand entiers naturels donner dans une liste, voici ou je bloque ca bug :-(

    http://imageshack.us/photo/my-images/141/pythont.png/
    si je rentre
    3
    2
    1
    0

    il m'affiche
    [3, 2, 1]
    6
    3
    3 et non 2 why? help me

  2. #2
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonsoir,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        if maxi < a: # Soit 0
            maxiR = maxi
            maxi = a
    Sinon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ma_liste = []
    a = 1
     
    while a != 0:
        a = int(input())# ... Pas de contrôle sur la saisie...
        if a != 0:
            ma_liste.append(a)
     
    print(ma_liste)
    ma_liste.sort()
    print(ma_liste[-2:])
    Je reste simple dans la réponse... Voir les méthodes de l'objet liste et l'index de celle ci.

    @+

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 4
    Par défaut re
    marche pas mon jeune ami^^

    regarde http://imageshack.us/photo/my-images/202/pythonu.png/

    ça me met tjr 3 0 et non 3 2 ^^
    je ne connais pas la fct .sort on ne l'a pas encore vu^^ j'ai déjà essayer ta technique mais ca ne marchait pas^^

    au moins je suis content ca prouve que je suis pas plus débile que ca

    je dois afficher les 2 plus grds nombre de la liste que je crée sans utilisé des fct hard comme . sort que j'ai pas vu ou max ou autre chose comme ca, juste le cerveau et des variable avec une boucle évidemment^^ et des conditions mais thats all ^^

  4. #4
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Je ne vous montre qu'un jeux d'"étiquette" jeune padawan...
    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
    ma_liste = []
    a = 1
    max1 = 0
    max2 = 0
     
    while a != 0: # ou while a:
        a = int(input()) # Arg...
        if a != 0: # ou if a:
    #etc...
            ma_liste.append(a)
            if a > max1:
                max1 = a
            elif a > max2:
                max2 = a
        print(ma_liste, max1, max2)
     
    print(ma_liste)
    print(max1, max2)
    Et etc...
    Le but est de mettre la 'valeur' dans la bonne 'boite'...

    Merci d'utiliser la balise code du site (# en haut) pour poste votre code.

    @+

    Edit pour quelques notes...
    Bon courage.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 4
    Par défaut re
    Merci mon maître
    je tacherai de faire mieux la prochaine fois

    May the force be with you.

  6. #6
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Autre solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >>> liste = [3, 2, 1]
    >>> liste_copy = liste[:]
    >>> for i in range(2):
    ...     try:
    ...         n = max(liste_copy)
    ...         print(n)
    ...         liste_copy.remove(n)
    ...     except: pass
    ... 
    3
    2

  7. #7
    Membre Expert Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Par défaut
    Hors, peut-être, problèmes de performance (si la liste a de nombreux éléments, si la comparaison de deux éléments est complexe, ...), un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sorted(set(liste))[-2:]
    fera l'affaire.

    quelques explications, quand même.

    set () : on ne conserve qu'une seule fois les éléments de la liste. Si la liste contient plusieurs fois la même valeur max ([1,2,3,9,9]) on ne souhaite pas récupérer, au final, 9 et 9, mais 9 et 3

    sorted() : on accède aux éléments triés du plus "petit" au plus "grand"

    [:-2] [-2:] : on accède aux 2 plus grands éléments.

  8. #8
    Membre émérite
    Homme Profil pro
    Ingénieur R&D en apprentissage statistique
    Inscrit en
    Juin 2009
    Messages
    447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur R&D en apprentissage statistique

    Informations forums :
    Inscription : Juin 2009
    Messages : 447
    Par défaut
    Si les performances sont vraiment importante il faut envisager de passer par une file de priorité afin de ne pas avoir à tout trier.

    Il existe le module heapq, pour le faire à partir de pyhton 2.3.

    Cela permet de faire le tri des K premières valeurs parmi N en complexité O(K * log N) au lieu de O(N*log N) dans la plupart des cas.
    Il s'agit d'un comportement asymptotique donc évidemment pour de petites listes, sorted peut très bien donner de meilleurs résultats.

  9. #9
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonsoir,

    Citation Envoyé par Alexis.M Voir le message
    Si les performances sont vraiment importante
    Ben en fait ici non puisque c'est une liste résultant d'input... (Pour rester sur le sujet du PO )
    Autant stocker dès la saisie.

    @+

Discussions similaires

  1. [10g] Problème d'affichage des nombre décimaux
    Par arum38 dans le forum Forms
    Réponses: 8
    Dernier message: 15/11/2013, 09h01
  2. Réponses: 6
    Dernier message: 01/10/2012, 23h33
  3. Réponses: 0
    Dernier message: 13/12/2010, 09h34
  4. [JTable] Problème d'affichage des données
    Par ddams dans le forum Composants
    Réponses: 2
    Dernier message: 15/09/2004, 17h07
  5. Réponses: 1
    Dernier message: 06/03/2003, 11h57

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