Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#26 03-07-2020 19:08:04

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 991

Re : python, fonction produit

Re,

Ma solution (avec affichage élaboré de la réponse)

def ajoute_un_jour(an,mois):
    bis= 1 if  mois>2 and ((an % 400 == 0) or (an % 4 ==0 and not an % 100==0)) else 0  
    return bis

def NumJour(j,m,a):
    Jours_Mois=[0,31,28,31,30,31,30,31,31,30,31,30]
    NumJour=sum(Jours_Mois[:m])+j+ajoute_un_jour(a,m)
    return NumJour

j,m,a=9,8,2020
jma=str(j).zfill(2)+"/"+str(m).zfill(2)+"/"+str(a)
print("Le "+jma+" est le "+str(NumJour(j,m,a))+"er"[:1+(j*m==1)]+" jour de l'année")

Le 09/08/2020 est le 222e jour de l'année
Le 09/08/2018 est le 221e jour de l'année

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#27 04-07-2020 15:41:29

freddy
Membre chevronné
Lieu : Paris
Inscription : 27-03-2009
Messages : 7 457

Re : python, fonction produit

Salut,

petite question : tu ne testes pas l'hypothèse de date un peu farfelu, genre 29.02.2019 ou bien 32.MM.YYYY ou bien encore, DD.13.YYYY ?, par suite d'une erreur de saisie ?
On alors, on fait l'hypothèse que c'est vérifié dès le début, je ne sais.
Sinon, c'est à peu près comme ça que j'aurais fait aussi :-) mais j'aurais plutôt utilisé une table genre [0, 31, 59, …, 335] et pointé sur table(mois-1). Mais rien d'exceptionnel.


De la considération des obstacles vient l’échec, des moyens, la réussite.

Hors ligne

#28 05-07-2020 11:13:28

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 991

Re : python, fonction produit

Re,

Ça devrait se faire, mais ça rallonge pas mal la sauce...
J'ai utilisé sum parce que le questionnement était placé après une réponse à Golgup où j'évoquais son emploi, sinon, oui, les sommes sont comme tu le suggères, déjà faites dans le prog de calendrier perpétuel...
Je ne l'ai volontairement pas fait : c'était la réponse - simple - à la problématique de Tuidiama (qu'on ne reverra pas).
Si c'est une réponse destinée au "grand public", alors je m'y colle comme dans mon calendrier perpétuel...
Bon, alors si tu as vu, je peux sortir le script du spoiler :

def ajoute_un_jour(an,mois):
    bis= 1 if  mois>2 and ((an % 400 == 0) or (an % 4 ==0 and not an % 100==0)) else 0  
    return bis

def NumJour(j,m,a):
    Jours_Mois=[0,31,28,31,30,31,30,31,31,30,31,30]
    NumJour=sum(Jours_Mois[:m])+j+ajoute_un_jour(a,m)
    return NumJour

j,m,a=9,8,2020
jma=str(j).zfill(2)+"/"+str(m).zfill(2)+"/"+str(a)
print("Le "+jma+" est le "+str(NumJour(j,m,a))+"er"[:1+(j*m==1)]+" jour de l'année")

Je n'étais pas non plus obligé de créer une 2e fonction ajoute_un jour, je pouvais insérer la ligne de détermination, tout de suite après la déclaration de la fonction Numjour.
C'était dans un souci pédagogique, pour lui montrer  - sans le dire - qu'une fonction peut en appeler une autre, lui passer des paramètres, récupérer le résultat et l'exploiter...

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

Pied de page des forums