Bug module datetime ?
Résolu
Phil_1857
Messages postés
1872
Date d'inscription
Statut
Membre
Dernière intervention
-
Phil_1857 Messages postés 1872 Date d'inscription Statut Membre Dernière intervention -
Phil_1857 Messages postés 1872 Date d'inscription Statut Membre Dernière intervention -
4 réponses
Bonjour,
C'est plutot que TOUS les dimanches donnent 7 : https://pythontic.com/datetime/date/isoweekday
C'est plutot que TOUS les dimanches donnent 7 : https://pythontic.com/datetime/date/isoweekday
Bon sang, mais c'est bien sur ! :-)
Je me suis polarisé sur cette date car c'est un anniversaire ... ça a été l'arbre qui cache la foret
et m'a empêché de chercher plus loin
Et comme j'ai initialisé mon dictionnaire days avec des clés de 0 à 6 au lieur de 1 à 7
Merci Jee Pee d'avoir mis en évidence ce biais cognitif !
Pour l'anecdote, mon dictionnaire de 0 à 6 venait d'un autre programme réalisé juste avant, qui fait la même chose sans passer par le module datetime :
Je me suis polarisé sur cette date car c'est un anniversaire ... ça a été l'arbre qui cache la foret
et m'a empêché de chercher plus loin
Et comme j'ai initialisé mon dictionnaire days avec des clés de 0 à 6 au lieur de 1 à 7
Merci Jee Pee d'avoir mis en évidence ce biais cognitif !
Pour l'anecdote, mon dictionnaire de 0 à 6 venait d'un autre programme réalisé juste avant, qui fait la même chose sans passer par le module datetime :
import re TITLE = '''\n*********************************** * Quel jour tombe une date donnée * ***********************************\n''' days = {0:'Dimanche', 1:'Lundi', 2:'Mardi', 3:'Mercredi', 4:'Jeudi', 5:'Vendredi', 6:'Samedi'} #Ask for a date while True: print(TITLE) date = input('Date (ex : 7-2-1957): ') if (not re.match('([0-9]+-){2}([0-9]){4}', date)): print('\nEntrer une date au format spécifié') else: break #Extracts day,month,year numbers = date.split('-') day = int(numbers[0]) month = int(numbers[1]) year = int(numbers[2]) man=int(0.6+1/month+0.001) mp=month+12*man ap=year-man jd=day+int((367*(mp-1)+5)/12+0.001)+int(365.25*(ap+4712)+0.001) jd=jd-int(ap/100)+int(ap/400) print('\n(Julian Day : %d)'%jd) js=(jd-1720977)/7 js=int(7*(js-int(js))+0.001) print('\nLe %s est un %s'%(date,days[js]))
Ce foutu indice 0 dans certains langages pour listes ou tableaux !
Il y très longtemps, en utilisant l'assembleur, et donc constituant à la main toutes les structures de données, j'ai appris que pour trouver le 1er élément, depuis l'adresse mémoire de début de la zone, on utilisait un déplacement de zéro, et pour le second, un déplacement de 1 (fois la taille de l'élément). Déplacement VS indice ou position, c'est mieux ;-)
Si tu regardes bien le lien sur la fonction, tu verras que l'exemple ne va pas aider à la compréhension de cette problématique. Comment shinter la première valeur du tableau d'indice zéro en mettant un texte bidon.
Il y très longtemps, en utilisant l'assembleur, et donc constituant à la main toutes les structures de données, j'ai appris que pour trouver le 1er élément, depuis l'adresse mémoire de début de la zone, on utilisait un déplacement de zéro, et pour le second, un déplacement de 1 (fois la taille de l'élément). Déplacement VS indice ou position, c'est mieux ;-)
Si tu regardes bien le lien sur la fonction, tu verras que l'exemple ne va pas aider à la compréhension de cette problématique. Comment shinter la première valeur du tableau d'indice zéro en mettant un texte bidon.