From 118ad55a55d0cb1cd76af9aacdeee6cea3f327f5 Mon Sep 17 00:00:00 2001 From: Benjamin Renard Date: Tue, 26 Nov 2024 17:39:40 +0100 Subject: [PATCH] =?UTF-8?q?On=20va=20faire=20encore=20un=20peu=20mieux=20e?= =?UTF-8?q?t=20charger=20toutes=20les=20ann=C3=A9es=20pr=C3=A9c=C3=A9dente?= =?UTF-8?q?s=20dispos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tirkdo.py | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/tirkdo.py b/tirkdo.py index 09b94a4..b992085 100644 --- a/tirkdo.py +++ b/tirkdo.py @@ -13,7 +13,7 @@ participants = [ 'Charlotte', 'Nico', 'Didi', - 'Johnny', +# 'Johnny', 'Ben', 'Ludo', ] @@ -22,19 +22,26 @@ on_evite = { 'Ben': 'Ludo', 'Charlotte': 'Nico', 'Maman': 'Papa', - 'Didi': 'Johnny', +# 'Didi': 'Johnny', } +annees_passees = {} + # On charge le résultat de l'année dernière -nom_fichier = sys.argv[1] if len(sys.argv) > 1 else f"{annee-1}.json" -try: - with open(nom_fichier, "r", encoding="utf-8") as fd: - annee_passee = json.load(fd) - print(f"Résultat de l'an passée chargé depuis le fichier {nom_fichier} :") - print("\n".join([f"- {offre} => {recois}" for offre, recois in annee_passee.items()])) -except FileNotFoundError: - print(f"Échec de chargement du tirage de l'an passé depuis le fichier {nom_fichier}.") - sys.exit(1) +ancienne_annee = annee - 1 +while True: + nom_fichier = f"{ancienne_annee}.json" + try: + with open(nom_fichier, "r", encoding="utf-8") as fd: + annee_passee = json.load(fd) + print(f"Résultat de l'année {ancienne_annee} chargé depuis le fichier {nom_fichier} :") + print("\n".join([f"- {offre} => {recois}" for offre, recois in annee_passee.items()])) + for offre, recois in annee_passee.items(): + annees_passees[offre] = annees_passees.get(offre, []) + [recois] + ancienne_annee += -1 + except FileNotFoundError: + print(f"Échec de chargement du tirage de l'an passé depuis le fichier {nom_fichier}.") + break class EchecTirage(Exception): pass @@ -62,8 +69,8 @@ def tirage(nb_tentatives_max=99): # On évite entre couple if on_evite.get(offre) == recois or on_evite.get(recois) == offre: continue - # On évite de faire comme l'an passée - if annee_passee.get(offre) == recois: + # On évite de faire comme les années passées + if recois in annees_passees.get(offre, []): continue # Trouvé ! result[offre] = recois @@ -82,7 +89,7 @@ while not result: result = None # On affiche le résultat -print("Résultat du tirage pour l'année {annee} :") +print(f"Résultat du tirage pour l'année {annee} :") for offre, recois in result.items(): print(f" - {offre} -> {recois}") @@ -91,3 +98,5 @@ nom_fichier = f"{annee}.json" with open(nom_fichier, "w", encoding="utf-8") as fichier: fichier.write(json.dumps(result, indent=2, ensure_ascii=False)) print(f"Résultat enregistré dans le fichier {nom_fichier}.") + +# vim: tabstop=4 shiftwidth=4 softtabstop=4 expandtab