Skillbook Logo
foto profilo

Skill Factory

Lista post > Il 2024 è un anno bisestile. In programmazione come facciamo a capire se un anno è secolare e bisestile?

Il 2024 è un anno bisestile. In programmazione come facciamo a capire se un anno è secolare e bisestile?

Gino Visciano | Skill Factory - 02/03/2024 12:20:59 | in Home

Il 2024 è un anno bisestile, perché febbraio è di 29 giorni. Questo significa che il 2024 durerà 366 giorni e non 365 giorni come accade per gli anni non bisestili.

Nel calendario Gregoriano è bisestile un anno ogni 4, questa correzione è necessaria perché astronomicamente un anno solare dura circa 365,25 giorni.

Se non tenessimo conto di questa variazione, ogni 4 anni si accumulerebbe un ritardo di un giorno. I continui ritardi accumulati nel tempo, modificherebbero le date delle stagioni che corrispondono agli equinozi di primavera e autunno e i solstizi d'estate e inverno, spostandole in avanti nel tempo.
 

Skill Factory - Skillfactory - Gino Visciano - Skillbook - Python - anno bisestile

Gli anni secolari, ovvero quelli divisibili per 100, sono bisestili se oltre ad essere divisibili per 100 sono divisibili anche per 400. Quindi un anno è sicuramente bisestile se è divisibile per 400.

Ad esempio il 1600 è bisestile perché è divisibile per 400, mentre il 1700 non è bisestile perché non è divisibile per 400.

Gli anni non secolari sono bisestili solo se sono divisibili per 4.
 
Quindi, un programmatore, per verificare se un anno è bisestile, deve prima controllare se è secolare, in caso affermativo deve anche vedere se è divisibile per 400. Se l'anno non è secolare, per essere bisestile deve essere divisibile per 4.

Il programma Python seguente, ci permette di verificare se un anno è secolare e bisestile:


# Verifica se l'anno è bisestile

# Funzione
def tipo_anno():
    try:
        messaggio="L'anno "+str(v_anno.get())+" "
        if v_anno.get()%100==0:
            messaggio=messaggio+"è secolare e "
            if v_anno.get()%400==0:
                messaggio=messaggio+"bisestile."
            else:
                messaggio=messaggio+"non è bisestile."
        else:
            messaggio=messaggio+"non è secolare e "
            if v_anno.get()%4==0:
                messaggio=messaggio+"bisestile."
            else:
                messaggio=messaggio+"non è bisestile."
        tk.messagebox.showinfo(title='Informazioni', message=messaggio)
    except:
        messaggio="Inserisci l'anno da verificare"
        tk.messagebox.showinfo(title='Errore', message=messaggio)

def reset():
    v_anno.set("")

# Programma
import tkinter as tk

from tkinter.messagebox import showinfo
root=tk.Tk()
root.geometry('350x100+150+150')
root.resizable(False, False)
root.title('Verifica anno secolare e bisestile')
v_anno=tk.IntVar(root,"")
lbl_anno=tk.Label(root,text="Inserisci l'anno per verificare se è secolare e bisestile").pack(pady=5)
txt_anno=tk.Entry(root, justify="right",textvariable=v_anno).pack(pady=5)
frm_button=tk.Frame(root)
btn_verifica=tk.Button(frm_button,text="VERIFICA",command=tipo_anno).pack(side=tk.LEFT)
btn_reset=tk.Button(frm_button,text="RESET",command=reset).pack(side=tk.RIGHT)
frm_button.pack()
root.mainloop()


Se sei interessato ad approfondire questo argomento, clicca qui, per imparare a creare un calendario perpetuo con Python.

python bisestile calendario gregoriano programmazione anni secolari equinozi solstizi

Share Button
TOP