[Python] Occurence d'une liste

Occurence d'une liste [Python] - Python - Programmation

Marsh Posté le 22-02-2015 à 17:03:54    

Bonjour,
 
Après beaucoup de temps passé dessus, j'ai décidé de venir demander de l'aide.  
 
Sujet:
"Au second tour des élections, le candidat ayant obtenu le plus de voix est élu. S’il y a égalité de voix, tous les candidats ayant obtenu le plus de voix sont élus.
a) Écrire la fonction gagnant_tour2(vote) qui retourne dans un tableau les gagnants du second tour. On prendra garde à ne faire apparaître qu’une seule fois le nom des gagnants dans la liste finale. On se contentera d’une fonction faisant le calcul en temps quadratique par rapport à n."
 
Code:
 

Code :
  1. from collections import Counter
  2. def gagnant_tour2(vote):
  3.     L=[]
  4.     A=Counter(vote).most_common(len(vote))
  5.     for k in range(0,len(vote)+1):
  6.         y=A[k][1]
  7.         if A[0][1]>A[1][1]:
  8.             return A[0][0]
  9.         elif y==A[0][1]:
  10.             L.append(A[k][0])
  11.         return L


 
Merci d'avance, je ne sais pas comment procéder de manière vraiment "élégante".

Reply

Marsh Posté le 22-02-2015 à 17:03:54   

Reply

Marsh Posté le 22-02-2015 à 21:19:46    

1. le contenu de `vote` n'est pas clair, c'est quoi?
2. que ce soit un mapping ou pas, la manière dont tu utilises Counter n'a pas d'intérêt.
3. sauf si tu copies un algo existant et que tu veux te coller au plus près au texte, variables en minuscules, nommées avec un minimum de sens (pq "L", "y" et "A" dans le contexte ça ne veut rien dire du tout)

 

De la manière dont je voix ce truc, utiliser Counter est finaud: avec most_common(1) il va te donner le nombre de voix qu'a eu le "premier" candidat, ensuite tu peux juste filtrer counter.items() pour ne garder que les candidats ayant le même nombre de voix que le maximum.


Message édité par masklinn le 22-02-2015 à 21:20:46

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed