#1751 Le 10/12/2008, à 21:14
- tshirtman
Re : Topic des couche tard (10) !
Hors ligne
#1752 Le 10/12/2008, à 21:15
- Kamy
Re : Topic des couche tard (10) !
Bonsoir
Tiens tshirtman, je te sollicite pour un curieux problème en Python.
Voici un programme qui prends deux dictionnaires contenant un couple membre/points et fait l'addition des points pour chaque membre (la méthode n'est probablement pas la plus efficace ni rapide, mais je débute ...)
# Tri de la liste l dans l'ordre decroissant (points) et tri de la liste m (membres) de la meme façon
def tri(l,m):
for i in xrange(len(l)):
for j in reversed(xrange(i,len(l))):
if l[j]>l[j-1]:
t=l[j]
u=m[j]
l[j]=l[j-1]
m[j]=m[j-1]
l[j-1]=t
m[j-1]=u
# Classement de la nuit
classement = {'cariboune' : 3,'wid': 6, 'lynxy': 6, 'John_Lennon': 1, 'darkmustang': 6, 'Sergio': 6, 'le pingou': 5, 'Vinky': 6, 'Camille': 6, 'Dellfan': 6}
# Classement general (dans un fichier)
classement_fichier = {'John_Lennon': 1, 'Shawn': 20, 'Turtle56': 12, 'scrat': 24, 'Camille': 20, 'cariboune': 30, 'Vinky': 1, 'c.a': 4}
# Initialisation
liste_points,liste_membres=[],[]
liste_points_fichier,liste_membres_fichier=[],[]
liste_points_total,liste_membres_total=[],[]
classement_total = {}
for membre in classement: # Nuit
# Creation d'une liste avec les points
liste_points.append(classement[membre])
# Creation d'une liste avec les membres (dans le meme ordre)
liste_membres.append(str(membre))
for membre in classement_fichier: # Fichier
# Creation d'une liste avec les points
liste_points_fichier.append(classement_fichier[membre])
# Creation d'une liste avec les membres (dans le meme ordre)
liste_membres_fichier.append(str(membre))
# Liste de tous les membres
liste_membres_total = liste_membres + liste_membres_fichier
# Supprime les doublons
liste_membres_total = list(set(liste_membres_total))
# Addition des points
for membre in liste_membres_total:
if classement_fichier.has_key(membre) == 1: # Si deja joue (se trouve dans fichier)
if classement.has_key(membre) == 1: # Si dans fichier et joue ce soir
classement_total[membre] = int(classement[membre]) + int(classement_fichier[membre])
else: # Si dans fichier et pas joue ce soir
classement_total[membre] = int(classement_fichier[membre])
else: # Si pas dans fichier mais joue ce soir (nouveau)
classement_total[membre] = int(classement[membre])
for membre in classement_total:
liste_points_total.append(int(classement_total[membre]))
# Tri de la liste dans l'ordre
tri(liste_points_total,liste_membres_total)
# On parcourt toute la liste
for i in range(len(liste_membres_total)):
# Affichage du classement
print liste_membres_total[i],'->',liste_points_total[i]
Si tu l'exécutes une fois ça marche bien. Mais si tu change "le pingou" en "lepingou" au début dans la déclaration de classement, le programme m'inverse deux membres
Je trouve ça bien bien bizarre, car mon test pour trier la liste ne se fait que sur la valeur des points, et le nom du membre n'intervient pas...
Je cherche depuis hier, mais je veux pas t'embêter, si tu peux y jeter un coup d'oeil évidemment
Et Paf ça fait des Chocapics !
Hors ligne
#1753 Le 10/12/2008, à 21:31
- Sir Na Kraïou
Re : Topic des couche tard (10) !
la 'tite gogole a écrit :
Descendant de Charlemagne et de LUCA.
Bleu, en l'hommage d'un truc bleu. :'(
C'est pas du bleu.
C'est pas le lac de Genève, c'est le Lac Léman.
Hors ligne
#1754 Le 10/12/2008, à 21:32
- guguscat
Re : Topic des couche tard (10) !
plop
dehors le feminisme !
Un problème non résolu ? Indiquez le en insultant les gens qui tentent de vous aider.
Hors ligne
#1755 Le 10/12/2008, à 21:35
- Sir Na Kraïou
Re : Topic des couche tard (10) !
plop
dehors le feminisme !
Ouais ! Les femmes dehors et les hommes dedans : maintenant, il y a de plus en plus d'hommes au foyer. Torcher les gosses, les emmener à l'école, passer l'aspirateur, faire la cuisine, la lessive, le repassage, etc. etc.
Descendant de Charlemagne et de LUCA.
Bleu, en l'hommage d'un truc bleu. :'(
C'est pas du bleu.
C'est pas le lac de Genève, c'est le Lac Léman.
Hors ligne
#1756 Le 10/12/2008, à 21:45
- tshirtman
Re : Topic des couche tard (10) !
@Kamy: je pense que ça vient du fait qu'un dico n'est pas trié, autrement dit, l'odre dans lequel tu reçoit les éléments quand tu fait ton 'for' n'est pas prévisible, on peut supposer qu'en mémoir l'ordre alphabétique change des choses, mais pas sur, le fait que tu fasse des conversions en set() a le même effet (non ordonnés).
et essaye de faire des classe, ça fera moins mal aux yeux *_*.
^^
Hors ligne
#1757 Le 10/12/2008, à 21:56
- Kamy
Re : Topic des couche tard (10) !
Ah ben zut alors
J'avais tout de bon, et là c'est le seul truc qui va me bloquer. Ouiiiiin
Et il y a un moyen simple d'éviter cela ? Ou alors faut tout changer (et dans ce cas aucune idée de comment faire) ?
Et pour les classes, c'est prévu pour les vacances. En fait c'est le chapitre d'après donc j'ai toujours pas compris l'intérêt mais ça viendras
Dernière modification par Kamy (Le 10/12/2008, à 21:58)
Et Paf ça fait des Chocapics !
Hors ligne
#1758 Le 10/12/2008, à 22:00
- guguscat
Re : Topic des couche tard (10) !
guguscat a écrit :plop
dehors le feminisme !
Ouais ! Les femmes dehors et les hommes dedans : maintenant, il y a de plus en plus d'hommes au foyer. Torcher les gosses, les emmener à l'école, passer l'aspirateur, faire la cuisine, la lessive, le repassage, etc. etc.
Parait que y'a de plus en plus de gays aussi :s
Enf ait les hommes au foyer sont gays
Un problème non résolu ? Indiquez le en insultant les gens qui tentent de vous aider.
Hors ligne
#1759 Le 10/12/2008, à 22:12
- guguscat
Re : Topic des couche tard (10) !
ARGL tout les hommes sont GAYS !!!
Un problème non résolu ? Indiquez le en insultant les gens qui tentent de vous aider.
Hors ligne
#1760 Le 10/12/2008, à 22:14
- kinouchou
Re : Topic des couche tard (10) !
@ guguscat je pense que ça va faire plaisir à tous les papas qui s'occupent de leur enfants. Dans leur entourage c'est déjà pas top mais je suis sur que ça n'allait pas aussi loin
#1761 Le 10/12/2008, à 22:19
- guguscat
Re : Topic des couche tard (10) !
@ guguscat je pense que ça va faire plaisir à tous les papas qui s'occupent de leur enfants. Dans leur entourage c'est déjà pas top mais je suis sur que ça n'allait pas aussi loin
Oui bien sur malgré tout ce qu'on pourrait me mettre sur le dos, l'ironie me caractérise
Edit : mon existence est une blague
Dernière modification par guguscat (Le 10/12/2008, à 22:19)
Un problème non résolu ? Indiquez le en insultant les gens qui tentent de vous aider.
Hors ligne
#1762 Le 10/12/2008, à 22:20
- \\Ouranos//
Re : Topic des couche tard (10) !
tshirtman a écrit :la 'tite gogole a écrit :
Ubuntu facile, c'est :
- Dire "Bonjour"
- Lire la doc et les règles du forum avant de poster. Savoir poser une question intelligemment.
- Mettre des balises url autour des liens et un tiret à su.
Hors ligne
#1763 Le 10/12/2008, à 22:21
- Кຼزດ
Re : Topic des couche tard (10) !
la 'tite gogole a écrit :tshirtman a écrit :
dou
Hors ligne
#1764 Le 10/12/2008, à 22:26
- \\Ouranos//
Re : Topic des couche tard (10) !
Ouranos999 a écrit :la 'tite gogole a écrit :
Ubuntu facile, c'est :
- Dire "Bonjour"
- Lire la doc et les règles du forum avant de poster. Savoir poser une question intelligemment.
- Mettre des balises url autour des liens et un tiret à su.
Hors ligne
#1765 Le 10/12/2008, à 22:27
- kinouchou
Re : Topic des couche tard (10) !
@guguscat je ne l'ai pas pris au premier degré, je suis assez ironique aussi
#1766 Le 10/12/2008, à 22:37
- Mornagest
Re : Topic des couche tard (10) !
mathieuI a écrit :Ouranos999 a écrit :
N'oubliez pas de consulter la documentation pour vous donner un coup de main !
Merci de modifier le premier message de votre sujet pour ajouter [Résolu] lorsque votre problème l'est :)
Xubuntu 20.04 sur deux ordinateurs, zéro souci. Passez à Xubuntu ;)
Hors ligne
#1767 Le 10/12/2008, à 22:38
- Sir Na Kraïou
Re : Topic des couche tard (10) !
Lunatique ?
Descendant de Charlemagne et de LUCA.
Bleu, en l'hommage d'un truc bleu. :'(
C'est pas du bleu.
C'est pas le lac de Genève, c'est le Lac Léman.
Hors ligne
#1768 Le 10/12/2008, à 22:41
- spatz
Re : Topic des couche tard (10) !
PLOP ! Blogueur ! Râleur ! Agnostique ! Architecte ! Floodeur ! Gentil ! Chiant ! Fourbe ! Crâneur ! GNU/Windows/Linuxien ! Machiavélique ! Beau ! Républicain ! Intelligent ! Bosseur ! Très Prétentieux ! Scientifique ! Frimeur ! Étudiant ! De bonne foi ! Perverti ! Ubunteros ! Grand ! Sociable! Altruiste ! Provoc' ! Censé !
Hors ligne
#1769 Le 10/12/2008, à 22:41
- tshirtman
Re : Topic des couche tard (10) !
Ah ben zut alors
J'avais tout de bon, et là c'est le seul truc qui va me bloquer. OuiiiiinEt il y a un moyen simple d'éviter cela ? Ou alors faut tout changer (et dans ce cas aucune idée de comment faire) ?
Et pour les classes, c'est prévu pour les vacances. En fait c'est le chapitre d'après donc j'ai toujours pas compris l'intérêt mais ça viendras
c'est grave? ça ne change pas l'ordre si il n'y a pas d'ex-eaquo non?
les classes ça a l'intérêt que les différents niveaux de logiques sont bien mieux séparés, et le code est plus simple et plus clair, regarde ce que devient ton tri, si tu définis un score comme un objet et non un simple couple:
classement = {'cariboune' : 3,'wid': 6, 'lynxy': 6, 'John_Lennon': 1, 'darkmustang': 6, 'Sergio': 6, 'le pingou': 5, 'Vinky': 6, 'Camille': 6, 'Dellfan': 6}
class Score:
def __init__(self, nom, score):
self.name = name
self.score = score
def __sup__(self, autre_score):
return self.score > autre_score.score
liste = [ Score(nom, score) for nom, score in classement.items() ]
liste.sort()
bon j'utilise une liste comprehension pour créer liste, mais tu peut le faire avec un for. Enfin c'est bien plus clair pour moi que ton tri ^^.
Hors ligne
#1770 Le 10/12/2008, à 22:47
- guguscat
Re : Topic des couche tard (10) !
@guguscat je ne l'ai pas pris au premier degré, je suis assez ironique aussi
Tant mieux alors
Un problème non résolu ? Indiquez le en insultant les gens qui tentent de vous aider.
Hors ligne
#1771 Le 10/12/2008, à 22:54
- Kamy
Re : Topic des couche tard (10) !
@ Tshirtman :
non non, regardes le soucis :
cariboune -> 33
Camille -> 26
lepingou -> 24
darkmustang -> 20
lynxy -> 12
scrat -> 7
wid -> 6
John_Lennon -> 6
Dellfan -> 6
Vinky -> 6
Sergio -> 6
Turtle56 -> 5
c.a -> 4
Shawn -> 2
cariboune -> 33
Camille -> 26
scrat -> 24
Shawn -> 20
Turtle56 -> 12
Vinky -> 7
wid -> 6
lynxy -> 6
darkmustang -> 6
Dellfan -> 6
Sergio -> 6
le pingou -> 5
c.a -> 4
John_Lennon -> 2
Le classement est complètement modifié, et ce juste en changeant le nom du membre, alors qu'il ne devrait pas intervenir dans le tri ...
Pour ton exemple, il me retourne les adresses mémoire :
>>> print liste
[<__main__.Score instance at 0x02BB3D78>, <__main__.Score instance at 0x02BB3BE8>, <__main__.Score instance at 0x02BB3BC0>, <__main__.Score instance at 0x02BB7288>, <__main__.Score instance at 0x02BB7260>, <__main__.Score instance at 0x02BB7350>, <__main__.Score instance at 0x02BB7378>, <__main__.Score instance at 0x02BB73A0>, <__main__.Score instance at 0x02BB73C8>, <__main__.Score instance at 0x02BB73F0>]
Si ça fonctionne c'est probablement plus simple, mais je comprends pas du tout. Enfin t'embêtes pas à m'expliquer c'est pas grave
Et Paf ça fait des Chocapics !
Hors ligne
#1772 Le 10/12/2008, à 23:01
- Mornagest
Re : Topic des couche tard (10) !
C'est pas un peu prise de tête, ce sujet, finalement ?
N'oubliez pas de consulter la documentation pour vous donner un coup de main !
Merci de modifier le premier message de votre sujet pour ajouter [Résolu] lorsque votre problème l'est :)
Xubuntu 20.04 sur deux ordinateurs, zéro souci. Passez à Xubuntu ;)
Hors ligne
#1773 Le 10/12/2008, à 23:01
- tshirtman
Re : Topic des couche tard (10) !
for score in liste:
print score.nom+' -> '+score.score
ou sinon, tu peut ajouter la méthode __str__ a la classe Score:
class Score:
def __init__(self, nom, score):
self.name = name
self.score = score
def __sup__(self, autre_score):
return self.score > autre_score.score
def __str__(self):
return self.nom+' -> '+self.score
là
print liste
marcheras, parce qu'il sait comment représenter ton objet sous forme de texte .
pour la différence de classement alors je suppose que c'est ton tris qui se mélange les pinceaux, d'où l'intéret d'en utiliser un qui marche et est éprouvé .
Hors ligne
#1774 Le 10/12/2008, à 23:03
- tshirtman
Re : Topic des couche tard (10) !
C'est pas un peu prise de tête, ce sujet, finalement ?
c'est tout et rien à la fois
Hors ligne
#1775 Le 10/12/2008, à 23:05
- MattX
Re : Topic des couche tard (10) !
En fait, je trouve que ce sujet est une belle démonstration de l'emmerdement mondial généré par Python.
Marvin: “I am at a rough estimate thirty billion times more intelligent than you. Let me give you an example. Think of a number, any number.” — Zem: “Er, five.” — Marvin: “Wrong. You see?”
Accélération nominale d'un iPad pour fonctionnement optimal : 9.81 m/s² sur 10 mètres, puis arrêt.
GMT-5
Hors ligne