08:21 <morgan`> bonjour
09:32 <Ohan> o/
09:50 <No`> salut les afpystes
10:01 <jpcw> matin café thé
10:36 <kujiu> bonjour
14:26 <kurichan> misc, ogrisel: ça tient toujours pour le rendez-vous de ce soir sur l'atelier d'introduction à Python?
14:27 <kurichan> à 21H au Hall's beer (68 rue Saint Denis)
14:31 <misc> kurichan: pour moi, oui
14:31 <kurichan> ça marche
14:32 <misc> faut peut etre que je prepare des choses d'ailleurs :/
14:36 <kurichan> misc: c'est pas grave si tu n'a pas le temps de préparer, j'ai moi aussi pas grand chose
14:37 <kurichan> par contre j'ai le temps d'y travailler ce week end
14:37 <misc> kurichan: j'aime pas debarquer les mains dans les poches
14:37 <misc> ( ceci dit, j'ai deja oublié que je voulait faire ça )
15:11 <zafy> haypo, c'est toi qui a fait le ods du programme ?
15:20 <misc> il a fait l'ods à partir du web, que j'ai fait à partir de'un ods ici
15:20 <misc> ( mais comme j'ai tout les numéros de tel, j'ai pas trop envie que ça se retrouve dans la nature )
15:21 <zafy> en fait c'est juste pour savoir comment je défusionne des cellules
15:21 <zafy> parce que la les horaires entre le samedi et le dimanche sont pas alignés
15:22 <zafy> donc si je les colle cote a cote ca fait 14h le samedi en face de 12h30 le dimanche c'est pas tres beau
15:22 <zafy> bon sinon je refais tout c'est pas tres grave
15:23 <haypo> zafy: oui
15:23 <zafy> haypo, comment tu fais dans ooffice pour fusionner ou defusionner des cellules ?
15:24 <haypo> zafy: euh, c'est facile de défusionner
15:24 <haypo> Format > fusionner les cellules > [x] Fusionner
15:24 <zafy> ah yes
15:24 <zafy> ok
15:24 <zafy> je cherchai dans le dialogue de formattage des cellules
15:25 <haypo> en faisant le programme j'ai gagné au moins 10 points d'XP en OpenOffice !
15:26 <zafy> lol
15:26 <segle> haypo, ah parce que t'es rôliste aussi ?
15:26 <segle> Ou drogué de mmorpg que rpg ça devrait pas être dans le nom du genre
15:26 <zafy> haypo, je vais le faire avec des horaires au 1/4 d'heure parce que sinon ca fait chelou a l'impression
15:26 <misc> les rolistes c'est le mal, ça mange des bébés (tm)
15:27 <segle> misc, c'est pas le pire
15:27 <segle> ca viole les caissières
15:27 <segle> ça mange cru
15:27 <misc> ça a les cheveux longs
15:27 <segle> ça détruit le monde des fois aussi
15:27 <segle> misc, c'est un préjugé, ça
15:27 <segle> j'ai les cheveux courts
15:27 <haypo> zafy: hésite pas à retravailler le programme
15:27 <segle> :D
15:27 <zafy> haypo, j'hésite pas :P
15:28 <haypo> zafy: j'ai pas fait par quart d'heure de peur que ça rentre pas à l'impression
15:28 <haypo> faut que ça tienne dans une feuille A4
15:28 <feth> les rolistes des années 200+ sont parfois chauves, je confirme. L'âge
15:28 <haypo> j'ai déjà passé bcp de temps dessus
15:28 <zafy> haypo, nan au contraire, c'est trop petit, t'en fais pas je vais gérer
15:28 <haypo> vu que le programme a changé et qu'il y avait des fautes :-)
15:28 <zafy> et puis le pb c'est que du coup si je met samedi sur une page et dimanche en face les heures correspondent pas
15:29 <haypo> tu peux mettre les deux programmes horizontalement ?
15:31 <zafy> haypo, bah c'est un peu le but
15:31 <zafy> sinon je sais pas comment on va remplir le reste de l'espace
15:31 <zafy> je pensai faire 1ere page : titre, page 2 : samedi, page 3 : dimanche, page4 : Sponsorts
15:33 <zafy> haypo, le programme c'est une feuille A4 en format paysage
15:33 <zafy> enfin c'est ce qu'on m'a dit de faire
15:33 <zafy> comme ca tu la plie ca fait 4 pages
15:34 <haypo> 1 page tout court c'est plus pratique
15:34 <haypo> enfin, je trouve
15:34 <haypo> fait comme tu veux
15:39 <zafy> bon je fais un modele et puis je soumettrai tout ca et vous me dites ce que vous en pensez
15:41 <vrialland> il doit encore bouger le planning ?
15:43 <haypo> vrialland: demande misc
15:44 <vrialland> j'dis ça parce que si c'est le cas, ça serait ptête plus simple de générer un Excel depuis le site non ?
15:44 <haypo> vrialland: perso j'ai pas des les droits
15:44 <haypo> et les personnes qui ont les droits sont très occupés
15:44 <haypo> donc bah voilà
15:44 <misc> vrialland: faut juste le coder
15:45 <misc> perso je sais pas comment faire, c'est du zope
15:45 <vrialland> misc: bah je veux bien le faire ça
15:45 <misc> sinon, même sans les droits, suffit d'envoyer un patch
15:46 <misc> vrialland: https://hg.afpy.org/afpy.barcamp/
15:47 <zafy> euh question, la conf Turbogears elle fait une heure ?
15:48 <No`> s'ils branchent le turbo, elle peut finir plus vite
15:49 <misc> zafy: 55 minutes, oui
15:50 <vrialland> misc: thx vais regarder ça
20:01 <yotaff> hum y'a un warning par beau dans la page partenaire
20:42 <artart78> yotaff: ha wé zarb
21:38 <crashdump> bonsoir :)
21:40 <crashdump> j'ai posté un appel a l'aide sur http://www.afpy.org/python/forum_python/forum_general/238080362833 si quelqu'un a le temps et l'envie d'y jeter un oeil, ça serais avec plaisir. Merci :)
21:47 <NaPs> crashdump: je dirais qu'une solution logique serait d'utiliser un dictionnaire dont le key serait l'identifiant et la valeur le tuple (tour, temps)
21:47 <NaPs> ensuite tu parcours chaque élément de ta première liste, tu vérifies qu'il existe dans le dict sinon tu l'ajoutes, et si oui, et qu'il est plus grand tu le remplace par la valeur existante
21:50 <crashdump> en fait c'est vraiment tout bête.
21:51 <crashdump> j'essaye ça, merci
21:52 <NaPs> http://gist.github.com/111858 :)
21:53 <NaPs> reste plus qu'a convertir d en liste comme tu veux mais ca c'est tout simple
21:55 <crashdump> punaise, t'es vraiment génial. merci, j'essaye ça en conditions réeles :)
21:56 <vrialland> crashdump : sinon y'a dict((k, max(v, key=operator.itemgetter(1))) for k, v in itertools.groupby(sorted(a), key=operator.itemgetter(0))).values()
21:56 <vrialland> :)
21:57 <crashdump> je vais essayer de jouer avec les deux pour comprendre ;)
21:58 <NaPs> vrialland: je pensais aussi trier sa liste et la dicter juste après
21:58 <crashdump> quelle est la méthode la plus "pythonesque" ?
21:59 <vrialland> la mienne est pas la plus lisible toujours ^^
21:59 <crashdump> non, en effet.. j'avoue .. je m'embrouille un peu avec là
22:00 <NaPs> >>> dict([(x[0], x) for x in sorted(l, key=lambda x: x[1])]).values()
22:00 <NaPs> [(1, 3, 45), (2, 2, 28), (3, 3, 51), (4, 2, 31), (5, 2, 31), (6, 2, 33)]
22:00 <NaPs>
22:00 <NaPs> voila t'as 3 solutions :)
22:01 <crashdump> ah, le voilà le fameux lambda, j'ai lu quelques textes a sont propos.. sans trop comprendre comment le mettre en application
22:01 <NaPs> c'est simplement une fonction anonyme
22:01 <crashdump> càd ?
22:01 <NaPs> ca évite d'en définir une juste pour faire le tri
22:02 <NaPs> en gros
22:02 <crashdump> ook
22:02 <NaPs> sont équivalent :
22:02 <NaPs> f = lambda x: x+1
22:02 <NaPs> et
22:02 <NaPs> def f(x):
22:02 <NaPs> return x+1
22:03 <crashdump> correspondent a la même chose. ok
22:03 <crashdump> je saisi
22:03 <NaPs> dans sorted
22:03 <NaPs> key correspond a ce qu'il utilise pour faire le tri
22:03 <NaPs> x est l'élément a trier
22:04 <NaPs> et tu retournes une valeur a partir de ça
22:04 <NaPs> (je m'explique peut être pas très bien :°)
22:05 <crashdump> pas envident.. performant et cour mais pas evident a conceptualiser :)
22:05 <NaPs> on peut dire que par défaut, le key est lambda x: x
22:07 <NaPs> je reformule : pour faire un tri, il faut une valeur a comparer avec d'autres. Si tu fais un tri de liste d'entiers, pas trop de problèmes
22:07 <NaPs> mais si tu veux trier sur le second élément d'un tuple, il faut lui dire
22:07 <NaPs> donc dans ce cas tu utilises key pour définir une référence vers une fonction
22:08 <NaPs> cette fonction prend en entrée l'élément a trier (le tuple) et retourne une valeur qu'il utilisera pour le tri (le second élément de ton tuple)
22:08 <NaPs> d'ou lambda x: x[1]
22:08 <NaPs> ou bien
22:09 <NaPs> def f_tri(x): return x[1]
22:09 <NaPs> puis sorted(l, key=f_tri)
22:09 <NaPs> je suis plus clair ? :)
22:09 <crashdump> oui
22:09 <crashdump> bien plus :)
22:10 <crashdump> okok, en décomposant ça commence a être plus clair a mes yeux.
22:12 <crashdump> merci bien en tout cas !