🚀 Nuova versione beta disponibile! Feedback o problemi? Contattaci

Calcolatore di Codice Fiscale

Codegrind Team•Jul 10 2024

Descrizione del Progetto

In questo progetto, realizzerai un generatore di codice fiscale italiano utilizzando Python. Il programma raccoglierà i dati dell’utente (nome, cognome, data di nascita, sesso e luogo di nascita) e genererà il codice fiscale basato su tali dati.

Requisiti

  1. Librerie Python: Utilizzare le librerie standard di Python.
  2. Interfaccia Utente: Creare una semplice interfaccia utente a riga di comando che permetta all’utente di inserire i propri dati.
  3. Generazione del Codice Fiscale:
    • Calcolare le consonanti e le vocali del nome e cognome.
    • Calcolare il codice della data di nascita e del sesso.
    • Calcolare il codice del luogo di nascita utilizzando un dizionario.
    • Calcolare il carattere di controllo.

Passaggi

  1. Raccogliere i Dati dell’Utente: Chiedere all’utente di inserire nome, cognome, data di nascita, sesso e luogo di nascita.
  2. Generare il Codice Fiscale:
    • Calcolare il codice del cognome e del nome.
    • Calcolare il codice della data di nascita e del sesso.
    • Calcolare il codice del luogo di nascita.
    • Calcolare il carattere di controllo.
  3. Visualizzare il Codice Fiscale Generato.

Esempio di Codice

import datetime

def codice_cognome(cognome):
    consonanti = ''.join([c for c in cognome if c.isalpha() and c not in 'AEIOU'])
    vocali = ''.join([c for c in cognome if c.isalpha() and c in 'AEIOU'])
    codice = (consonanti + vocali + 'XXX')[:3].upper()
    return codice

def codice_nome(nome):
    consonanti = ''.join([c for c in nome if c.isalpha() and c not in 'AEIOU'])
    vocali = ''.join([c for c in nome if c.isalpha() and c in 'AEIOU'])
    if len(consonanti) >= 4:
        consonanti = consonanti[0] + consonanti[2] + consonanti[3]
    codice = (consonanti + vocali + 'XXX')[:3].upper()
    return codice

def codice_data_nascita(data_nascita, sesso):
    mese_codice = 'ABCDEHLMPRST'
    data = datetime.datetime.strptime(data_nascita, '%d/%m/%Y')
    anno = str(data.year)[-2:]
    mese = mese_codice[data.month - 1]
    giorno = data.day + 40 if sesso == 'F' else data.day
    giorno = f'{giorno:02d}'
    return anno + mese + giorno

comuni = {
    'ROMA': 'H501',
    'MILANO': 'F205',
    'NAPOLI': 'F839',
    # Aggiungi altri comuni qui
}

def codice_comune(comune):
    return comuni.get(comune.upper(), 'XXXX')

def carattere_di_controllo(cf_parziale):
    valori = {
        **{chr(i): i - 48 for i in range(48, 58)},
        **{chr(i): i - 55 for i in range(65, 91)}
    }
    dispari = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
               1, 0, 5, 7, 9, 13, 15, 17, 19, 21, 1, 0, 5, 7, 9, 13, 15, 17, 19, 21,
               1, 0, 5, 7, 9, 13, 15, 17, 19, 21, 1, 0, 5, 7, 9, 13, 15, 17, 19, 21]
    pari = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
            1, 0, 5, 7, 9, 13, 15, 17, 19, 21, 1, 0, 5, 7, 9, 13, 15, 17, 19, 21,
            1, 0, 5, 7, 9, 13, 15, 17, 19, 21, 1, 0, 5, 7, 9, 13, 15, 17, 19, 21]

    somma = sum(dispari[valori[cf_parziale[i]]] if i % 2 == 0 else pari[valori[cf_parziale[i]]] for i in range(15))
    return chr((somma % 26) + 65)

def genera_codice_fiscale(nome, cognome, data_nascita, sesso, comune):
    cf = codice_cognome(cognome)
    cf += codice_nome(nome)
    cf += codice_data_nascita(data_nascita, sesso)
    cf += codice_comune(comune)
    cf += carattere_di_controllo(cf)
    return cf

def main():
    print("Generatore di Codice Fiscale")

    cognome = input("Inserisci il cognome: ")
    nome = input("Inserisci il nome: ")
    data_nascita = input("Inserisci la data di nascita (dd/mm/yyyy): ")
    sesso = input("Inserisci il sesso (M/F): ").upper()
    comune = input("Inserisci il comune di nascita: ")

    codice_fiscale = genera_codice_fiscale(nome, cognome, data_nascita, sesso, comune)
    print(f"Il tuo codice fiscale è: {codice_fiscale}")

if __name__ == "__main__":
    main()

Istruzioni per l’Esecuzione

  1. Salva il codice in un file: Ad esempio generatore_codice_fiscale.py.
  2. Esegui il programma:
    python generatore_codice_fiscale.py
    
  3. Interazione con l’utente:
    • Inserisci il cognome, nome, data di nascita, sesso e comune di nascita.
    • Il programma genererĂ  e visualizzerĂ  il codice fiscale basato sui dati inseriti.

Estensioni Possibili

  1. Interfaccia Grafica: Utilizzare una libreria come tkinter per creare un’interfaccia grafica per il generatore di codice fiscale.
  2. Validazione: Aggiungere funzionalità per validare i dati inseriti dall’utente, come il controllo del formato della data di nascita.
  3. Dizionari Completi: Utilizzare un dizionario completo dei codici catastali per i comuni italiani.