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 18:08:04

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 14 945

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 14:41:29

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

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.

En ligne

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

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 14 945

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

Réponse rapide

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
quatre-vingt cinq plus quatre-vingt trois
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Pied de page des forums