Page 1 of 1

Arrêter un programme.

Unread postPosted: 30 Mar 2021, 12:37
by ggauny@live.fr
Bonjour,

suite à cela :

Code: Select all
if jdn<2299161 or jdn>5373484:
        print("jdn indéfini car hors limites de validité")


Le programme doit s'arrêter après le print si je suis hors limite, mais le programme continue de "tourner" et, bien sûr, renvoie des résultats faux.

J'ai cherché partout uns instruction pour stopper mais je n'ai rien trouvé.

Avez-vous une idée ?

Merci.

Re: Arrêter un programme.

Unread postPosted: 30 Mar 2021, 13:58
by Adriweb
Tu peux essayer de remplacer le "print(...)" par "raise Exception(...)"

Re: Arrêter un programme.

Unread postPosted: 30 Mar 2021, 15:44
by ggauny@live.fr
Bonjour à tous,

Un premier jet de mes programmes calendaires portés en python. (Ce n'est pas une sinécure !)
Mais j'y arriverai :)

Code: Select all
# Date calendaire d'un JDN donné.
# Validité du 01/01/-4712 au 31/12/9999.
# jdn signifie Julian Day Number en anglais soit : Numéro du jour Julien.

from math import *

def j2d(jdn):
   
    z=A=a=b=c=E=R=0
    d=j=m=an=s=0
    R=1
    if jdn<=0 or jdn>5373484:
        raise Exception("jdn indéfini car hors limites de validité")
        #print("jdn indéfini car hors limites de validité")
       
    z=int(jdn)
     
   
    a=int((z-1867216.25)/36524.25)
         
    A=z+1+a-int(a/4)
       
    b=A+1524; c=int((b-122.1)/365.25);
    d= int(365.25*c); E=int((b-d)/30.6001);
     
    j=b-d-int(30.6001*E)
   
    if E<14:
        m=E-1
       
    if E==14 or E==15:
        m=E-13
       
    if m<3:
        an=c-4715
       
    if m>2:
        an=c-4716 
       
    if an<0:
        R=-1
   
       
    s=R*(fabs(j)+ fabs(m/100)+ fabs(an/1000000))
    s=round(s,7)
   
    print(s)



Peut-être des maladresses à rectifier ? Sûrement...

par exemples :

jdn = 1 507 900 donne 22 mai -584 (585 av JC) en date julienne, 28 mai en date grégorienne
jdn = 1 842 713 donne 28 janvier 0333, parfois 27 selon les modes d'arrondis
jdn = 2 427 857 donne 23 février 1935
etc.
Merci à Adriweb.

Re: Arrêter un programme.

Unread postPosted: 31 Mar 2021, 08:16
by Bisam
Le python permet d'utiliser des listes comme valeur de retour.
Tu pourrais renvoyer un triplet [jour, mois, année], plutôt que d'imprimer un résultat...