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 :

gestion/comparaison de liste


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2023
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2023
    Messages : 4
    Par défaut gestion/comparaison de liste
    bonjour,

    tout nouveau en programmation, j ai quelques difficultés avec la gestion/manipulation de liste

    j ai une liste "score_trie" comme ceci,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    score_trie = [[3, 1], [8, 3], ,[15, 6], [24, 5], [24, 2], [51, 4], [51, 0]]
    le premier élément contient le score temporaire du joueur
    le deuxième élément contient l index du joueur

    je souhaite créer une nouvelle liste pour

    attribuer 2 points au score du joueur ayant le plus gros score temporaire (ici, 2 joueurs gagneront 2 points car ils sont à égalité (51 points))
    attribuer 1 point au score du joueur ayant le 2eme meilleur score temporaire (ici, 2 joueurs gagneront 1 point car ils sont à égalité (24 points))
    attribuer 0 points au score des autres joueurs

    ce qui donnerait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    score_fixe = [[2, 0], [2, 4], [1, 5], [1, 2], [0, 6], [0, 3], [0, 1]]
    le premier élément correspond aux points final
    le deuxième élément correspond a l index du joueur

    je parviens a créer une nouvelle liste "score_fixe" comme ceci
    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
    score_trie = [[3, 1], [8, 3], [24, 5], [24, 2], [51, 4], [51, 0]]
     
    liste  = []
     
    for x in range(len(score_trie)) :
    	liste.append(score_trie[-1])
    	score_trie.pop()
     
     
    print(liste)
     
    for k, v in enumerate(liste):
    	if k == 0 :
    		v[0] = 2
    	if k == 1 :
    		v[0] = 1
    	if k == 2 :
    		v[0] = 0
    	if k == 3 :
    		v[0] = 0
    	if k == 4 :
    		v[0] = 0
    	if k == 5 :
    		v[0] = 0		
    print(liste)
    voici le résultat de mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [[2, 0], [1, 4], [0, 2], [0, 5], [0, 3], [0, 1]]
    Sa fonctionne en l'état mais si il y a une égalité, ce n est pas bon

    en fait, et la est mon problème, je ne vois pas comment je pourrais comparer les valeurs et attribuer 2 points a chaque joueur ayant le meilleur score et de même pour le 2eme meilleur score en cas d égalité

    merci pour votre aide

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par ditladite Voir le message
    en fait, et la est mon probleme, je ne vois pas comment je pourrais comparer les valeurs et attribuer 2 points a chaque joueur ayant le meilleur score et de meme pour le 2eme meilleur score en cas d egalite
    Bien souvent commencer avec un papier et un crayon permet de mieux visualiser. Suffit de mettre un compteur de points à donner et de comparer si le joueur en cours de traitement a le même nombre de points que le joueur du traitement précédent (ce qui est facile avec ta liste triée). Et si ce n'est pas le cas on décrémente le compteur qui finira par arriver à 0.
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    score_trie = [[3, 1], [8, 3], [15, 6], [24, 5], [24, 2], [51, 4], [51, 0]]
    attrib=2
    result=[]
    for i in range(-1, -len(score_trie)-1, -1):
    	if attrib > 0 and i < -1  and score_trie[i][0] != score_trie[i+1][0]:
    		attrib-=1
    	result.append((score_trie[i][1], attrib))
    # for
     
    print(result)
    Le code est souple (on peut facilement passer l'attribution à 1 ou 3 ou autre valeur). Après si la liste d'origine est triée dans le sens croissant on pourra utiliser des indices positifs plus aisés à manipuler...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2023
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2023
    Messages : 4
    Par défaut
    slt,

    un grand merci a toi, ca a resolu mon probleme

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

Discussions similaires

  1. comparaison de listes chainee
    Par smalto dans le forum C
    Réponses: 5
    Dernier message: 22/09/2006, 18h10
  2. [List][Map?] Comparaison de Lists
    Par yolepro dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 25/08/2006, 17h39
  3. Gestion d'une liste box
    Par norwy dans le forum Windows
    Réponses: 6
    Dernier message: 01/11/2005, 12h51

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