Et Í partir du dictionnaire, l'impression finale est facile.
Mais cette méthode de conversion du générateur en dictionnaire me
paraÍ®t terriblement lourde, surtout qu'il y aura douze mois, c'est Í
dire douze branchement if/elif
Vous auriez des suggestions d'écriture plus élégante ?
Le Thu, 05 May 2022 22:26:20 +0200, Alain Ketterlin a écrit:
(Au passage : pourquoi utiliser des chaÍ®nes de caractères pour les mois ? Un entier serait plus simple Í manipuler.)
Pour ce qui est des chaÍ®nes de caractères, c'est surtout que j'ai épuré au maximum mon exposé du problème.
C'était juste une remarque en passant.
En réalité, ma source de donnée actuelle c'est plutÍ´t ce code lÍ : from datetime import datetime, timedelta, date def genereXdates2(): dateDepart = "26012022" dateFin = "07052022" depart = datetime.strptime(dateDepart, '%d%m%Y') fin = datetime.strptime(dateFin, '%d%m%Y') date = depart dict_transcodage = {"6": "S", "0": "D", "1":"L", "2":"M", "3":"M", "4":"J", "5":"V"} while date != fin: yield(date.strftime("%m"),dict_transcodage[date.strftime('%w')],date.strftime('%d')) date = date + timedelta(1)
Je proposais d'utiliser Í la place : yield (date.month, "LMMJVSD"[date.weekday()], date.day) (attention, weekday() ne suit pas la même convention que "%w" pour strftime). C'est toi qui voit. -- Alain.
yves <yves@free.invalid> writes:
Le Thu, 05 May 2022 22:26:20 +0200, Alain Ketterlin a écrit:
(Au passage : pourquoi utiliser des chaÍ®nes de caractères pour les mois
?
Un entier serait plus simple Í manipuler.)
Pour ce qui est des chaÍ®nes de caractères, c'est surtout que j'ai épuré
au maximum mon exposé du problème.
C'était juste une remarque en passant.
En réalité, ma source de donnée actuelle c'est plutÍ´t ce code lÍ :
from datetime import datetime, timedelta, date
def genereXdates2():
dateDepart = "26012022"
dateFin = "07052022"
depart = datetime.strptime(dateDepart, '%d%m%Y')
fin = datetime.strptime(dateFin, '%d%m%Y')
date = depart
dict_transcodage = {"6": "S", "0": "D", "1":"L", "2":"M", "3":"M",
"4":"J", "5":"V"}
while date != fin:
yield(date.strftime("%m"),dict_transcodage[date.strftime('%w')],date.strftime('%d'))
date = date + timedelta(1)
Le Thu, 05 May 2022 22:26:20 +0200, Alain Ketterlin a écrit:
(Au passage : pourquoi utiliser des chaÍ®nes de caractères pour les mois ? Un entier serait plus simple Í manipuler.)
Pour ce qui est des chaÍ®nes de caractères, c'est surtout que j'ai épuré au maximum mon exposé du problème.
C'était juste une remarque en passant.
En réalité, ma source de donnée actuelle c'est plutÍ´t ce code lÍ : from datetime import datetime, timedelta, date def genereXdates2(): dateDepart = "26012022" dateFin = "07052022" depart = datetime.strptime(dateDepart, '%d%m%Y') fin = datetime.strptime(dateFin, '%d%m%Y') date = depart dict_transcodage = {"6": "S", "0": "D", "1":"L", "2":"M", "3":"M", "4":"J", "5":"V"} while date != fin: yield(date.strftime("%m"),dict_transcodage[date.strftime('%w')],date.strftime('%d')) date = date + timedelta(1)
Je proposais d'utiliser Í la place : yield (date.month, "LMMJVSD"[date.weekday()], date.day) (attention, weekday() ne suit pas la même convention que "%w" pour strftime). C'est toi qui voit. -- Alain.
yves
Le Fri, 06 May 2022 21:46:00 +0200, Alain Ketterlin a écrit:
Je proposais d'utiliser Í la place : yield (date.month, "LMMJVSD"[date.weekday()], date.day) (attention, weekday() ne suit pas la même convention que "%w" pour strftime). C'est toi qui voit.
Merci, je vais utiliser ta ligne de code. Mon objectif est d'obtenir sur écran un aspect (graphique) analogue Í un calendrier carton (ces petits calendriers d'un format approximatif A4 qu'on trouve dans toutes les entreprises). @+ -- Yves
Le Fri, 06 May 2022 21:46:00 +0200, Alain Ketterlin a écrit:
(attention, weekday() ne suit pas la même convention que "%w" pour
strftime).
C'est toi qui voit.
Merci, je vais utiliser ta ligne de code.
Mon objectif est d'obtenir sur écran un aspect (graphique) analogue Í un
calendrier carton (ces petits calendriers d'un format approximatif A4
qu'on trouve dans toutes les entreprises).
Le Fri, 06 May 2022 21:46:00 +0200, Alain Ketterlin a écrit:
Je proposais d'utiliser Í la place : yield (date.month, "LMMJVSD"[date.weekday()], date.day) (attention, weekday() ne suit pas la même convention que "%w" pour strftime). C'est toi qui voit.
Merci, je vais utiliser ta ligne de code. Mon objectif est d'obtenir sur écran un aspect (graphique) analogue Í un calendrier carton (ces petits calendriers d'un format approximatif A4 qu'on trouve dans toutes les entreprises). @+ -- Yves