Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ############################################# CALCOLO CODICE FISCALE ##################################################
- import smtplib
- def cal_cognome(cognome):
- vcons = [] # vettore delle consonanti
- vocali = []
- consonanti = 0
- for i in range(len(cognome)):
- if cognome[i].isalpha() == True and cognome[i] != 'A' and cognome[i] != 'E' and cognome[i] != 'I' and cognome[
- i] != 'O' and cognome[i] != 'U':
- vcons.append(cognome[i])
- consonanti += 1
- elif cognome[i].isalpha() == True:
- vocali.append(cognome[i])
- if consonanti >= 3:
- v2 = vcons[0] + '' + vcons[1] + '' + vcons[2]
- return v2
- elif consonanti == 2:
- v2 = vcons[0] + '' + vcons[1] + '' + vocali[0]
- return str(v2)
- def cal_nome(nome):
- consonanti = 0
- vocali = []
- v1 = []
- for i in range(len(nome)):
- if nome[i].isalpha() == True and nome[i] != 'A' and nome[i] != 'E' and nome[i] != 'I' and nome[i] != 'O' and \
- nome[i] != 'U':
- v1.append(nome[i])
- consonanti += 1
- elif nome[i].isalpha() == True:
- vocali.append(nome[i])
- if consonanti >= 4:
- v2 = v1[0] + '' + v1[2] + '' + v1[3]
- return v2
- elif consonanti == 3:
- v2 = v1[0] + '' + v1[1] + '' + v1[2]
- return v2
- elif consonanti == 2:
- v2 = v1[0] + '' + v1[1] + '' + vocali[0]
- return v2
- else:
- v2 = v1[0] + '' + vocali[0] + '' + vocali[1]
- return str(v2)
- def cal_anno_mese(data):
- anno = data[2][2:]
- mesi = {'01': 'A', '02': 'B', '03': 'C', '04': 'D',
- '05': 'E', '06': 'H', '07': 'L', '08': 'M',
- '09': 'P', '10': 'R', '11': 'S', '12': 'T'}
- mese = mesi[data[1]]
- r=anno+''+mese
- return str(r)
- def cal_giornosesso(data, sesso):
- if sesso != "M":
- giorno = str(int(data[0]) + 40)
- else:
- giorno = data[0]
- return giorno
- def cal_codicecastale(luogo, provincia):
- listacomuni = open("listacomuni.txt", "r")
- for aline in listacomuni:
- valori = aline.split(';')
- nome = valori[1]
- pr = valori[2]
- codice = valori[6]
- if nome.casefold() == luogo.casefold() and pr.casefold() == provincia.casefold():
- return codice
- def cal_charctrl(cf):
- vpari = []
- vdispari = []
- sommapari = 0
- sommadispari = 0
- pari = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5,
- '6': 6, '7': 7, '8': 8, '9': 9, 'A': 0, 'B': 1,
- 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6, 'H': 7,
- 'I': 8, 'J': 9, 'K': 10, 'L': 11, 'M': 12, 'N': 13,
- 'O': 14, 'P': 15, 'Q': 16, 'R': 17, 'S': 18, 'T': 19,
- 'U': 20, 'V': 21, 'W': 22, 'X': 23, 'Y': 24, 'Z': 25}
- dispari = {'0': 1, '1': 0, '2': 5, '3': 7, '4': 9, '5': 13,
- '6': 15, '7': 17, '8': 19, '9': 21, 'A': 1, 'B': 0,
- 'C': 5, 'D': 7, 'E': 9, 'F': 13, 'G': 15, 'H': 17,
- 'I': 19, 'J': 21, 'K': 2, 'L': 4, 'M': 18, 'N': 20,
- 'O': 11, 'P': 3, 'Q': 6, 'R': 8, 'S': 12, 'T': 14,
- 'U': 16, 'V': 10, 'W': 22, 'X': 25, 'Y': 24, 'Z': 23}
- controllo = {0: 'A', 1: 'B', 2: 'C', 3: 'D', 4: 'E', 5: 'F',
- 6: 'G', 7: 'H', 8: 'I', 9: 'J', 10: 'K', 11: 'L',
- 12: 'M', 13: 'N', 14: 'O', 15: 'P', 16: 'Q', 17: 'R',
- 18: 'S', 19: 'T', 20: 'U', 21: 'V', 22: 'W', 23: 'X',
- 24: 'Y', 25: 'Z'}
- for i in range(0, len(cf), 2): # crea un vettore con gli elementi in posizione dispari
- vdispari.append(cf[i])
- for j in range(1, len(cf), 2): # crea un vettore con gli elementi in posizione pari
- vpari.append(cf[j])
- for x in vpari:
- sommapari += pari[x]
- for y in vdispari:
- sommadispari += dispari[y]
- resto = (sommapari + sommadispari) % 26
- r = controllo[resto]
- return r
- #ISO-8859-1
- def postino(codicefiscale,destinatario):
- mittente = 'postinopython@gmail.com'
- password = 'Postino00!'
- oggetto = " Subject: Codice Fiscale "
- contenuto = "\n\n" + "Ecco a lei il suo codice fiscale: "+codicefiscale
- messaggio = oggetto + contenuto
- print("Sto effettuando la connessione col Server...")
- email = smtplib.SMTP("smtp.gmail.com",587)
- email.ehlo() # effettuo l'hello col Server
- email.starttls() # avvio il canale TLS
- email.login(mittente, password) # effettuo il login
- print("Sto inviando...")
- email.sendmail(mittente, destinatario, messaggio)
- email.quit()
- print("Email Inviata!")
- def main():
- cognome = input(str("Inserire il cognome: ")).upper()
- nome = input(str("Inserire il nome: ")).upper()
- comune= input(str("Inserire il comune di nascita: "))
- provincia = input(str("Inserire la provincia : "))
- sesso = input(str("Inserire sesso (M o F): ")).upper()
- data = input("Inserire la data di nascita (nel formato GG-MM-AAAA): ").split('-')
- cf=cal_cognome(cognome)+cal_nome(nome)+cal_anno_mese(data)+cal_giornosesso(data,sesso)+cal_codicecastale(comune,provincia)
- codicefiscale=cf+cal_charctrl(cf)
- stato=input('Si desidera ricevere il codice fiscale tramite mail? (SI o NO): ').upper()
- if stato=='SI':
- destinatario = input("Inserire la propria mail: ")
- print(postino(codicefiscale,destinatario))
- else:
- print(codicefiscale)
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement