Quarta – Groupes aléatoires
Objectif
Créer des groupes aléatoires à partir d’une liste d’apprenants, en utilisant des fichiers de données et des scripts simples. L’objectif est de comprendre la logique de création de groupes indépendamment du langage utilisé.
Fichiers importants
data/learners.json: liste des apprenants au format JSONjavascript/groupes.js: implémentation en JavaScriptpython/groupes.py: implémentation en Python
Principe général
- Lire une liste de noms depuis un fichier JSON
- Mélanger les noms de manière aléatoire
- Diviser la liste en groupes de taille k
Données (learners.json)
[
"Ahmad",
"Asma",
"Danitza",
"Inès",
"Khrisly",
"Lilian",
"Ludovic",
"Manar",
"Manon",
"Noemie",
"Yacine"
]
Implémentation en JavaScript
Le script JavaScript lit le fichier JSON, mélange les données et crée des groupes.
const fs = require("fs");
const learners = JSON.parse(
fs.readFileSync("./data/learners.json", "utf-8")
);
function groupes(k) {
if (k <= 0) throw new Error("k must be greater than 0");
if (k > learners.length)
throw new Error("k cannot be greater than the number of names");
const shuffled = [...learners].sort(() => Math.random() - 0.5);
const result = [];
for (let i = 0; i < shuffled.length; i += k) {
result.push(shuffled.slice(i, i + k));
}
return result;
}
console.log(groupes(2));
Implémentation en Python
Le script Python applique exactement la même logique que la version JavaScript.
import json
import random
from pathlib import Path
data_path = Path(__file__).resolve().parent.parent / "data" / "learners.json"
with open(data_path, "r", encoding="utf-8") as f:
learners = json.load(f)
def groupes(k: int):
if k <= 0:
raise ValueError("k must be greater than 0")
if k > len(learners):
raise ValueError("k cannot be greater than the number of names")
shuffled = learners[:] # copy
random.shuffle(shuffled)
result = []
for i in range(0, len(shuffled), k):
result.append(shuffled[i:i+k])
return result
print(groupes(2))
Ce que j’ai appris
- Lire des fichiers JSON
- Utiliser des validations simples
- Mélanger des données aléatoirement
- Créer des groupes à partir d’une liste
- Implémenter la même logique en JavaScript et en Python
Liens
Dépôt GitLab (fichiers de l’exercice) : https://gitlab.com/ahmadola111-group/groupes-name-choices
Documentation (site) : https://ahmad-docs-b3e3cc.gitlab.io/quarta/