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
- Librerie Python: Utilizzare le librerie standard di Python.
- Interfaccia Utente: Creare una semplice interfaccia utente a riga di comando che permetta all’utente di inserire i propri dati.
- 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
- Raccogliere i Dati dell’Utente: Chiedere all’utente di inserire nome, cognome, data di nascita, sesso e luogo di nascita.
- 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.
- 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
- Salva il codice in un file: Ad esempio
generatore_codice_fiscale.py
. - Esegui il programma:
python generatore_codice_fiscale.py
- 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
- Interfaccia Grafica: Utilizzare una libreria come
tkinter
per creare un’interfaccia grafica per il generatore di codice fiscale. - Validazione: Aggiungere funzionalità per validare i dati inseriti dall’utente, come il controllo del formato della data di nascita.
- Dizionari Completi: Utilizzare un dizionario completo dei codici catastali per i comuni italiani.