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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| import itertools
liste=(
('Jean', 'M'),
('Enzo', 'M'),
('Juliette', 'F'),
('Blanche', 'F'),
('Aurore', 'F'),
('Gabriel ', 'M'),
('Marc', 'M'),
('Manon', 'F'),
('Emma', 'F'),
('Ulysse', 'M'),
('Kevin', 'M'),
('Iris', 'F'),
('Jeremy', 'M'),
('Michel', 'M'),
('Noemie', 'F'),
('Axel', 'M'),
('Yanis', 'M'),
('Solene', 'F'),
('Alice', 'F'),
('Valerie', 'F'),
('ValerieA', 'F'),
('ValerieB', 'F'),
('ValerieC', 'F'),
('ValerieD', 'F'),
) # Pas besoin de liste quand un tuple suffit...
def makeClasses(eleves, *, nb=4):
# Création des "nb" classes
classes=dict(("classe_%d" % i, list()) for i in range(1, nb+1))
# Séparation garçons/filles (on va reprendre le code de MPython Alaplancha ça lui fera plaisir ;)
garcons=tuple(x[0] for x in eleves if x[1] == "M")
filles=tuple(x[0] for x in eleves if x[1] == "F")
# Traitement des garçons et filles
for (i, (g, f)) in enumerate(itertools.zip_longest(garcons, filles)):
# Remplissage classe
key="classe_%d" % (i%nb + 1)
if g is not None: classes[key].append(g)
if f is not None: classes[key].append(f)
# for
return classes
# makeClasses()
classes=makeClasses(liste)
for (k, v) in classes.items(): print(k, v) |
Partager