Advertisement
Guest User

calcolo codice fiscale con invio email

a guest
Feb 17th, 2020
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.43 KB | None | 0 0
  1. ############################################# CALCOLO CODICE FISCALE ##################################################
  2. import smtplib
  3.  
  4.  
  5. def cal_cognome(cognome):
  6.     vcons = []  # vettore delle consonanti
  7.     vocali = []
  8.     consonanti = 0
  9.  
  10.     for i in range(len(cognome)):
  11.         if cognome[i].isalpha() == True and cognome[i] != 'A' and cognome[i] != 'E' and cognome[i] != 'I' and cognome[
  12.             i] != 'O' and cognome[i] != 'U':
  13.             vcons.append(cognome[i])
  14.             consonanti += 1
  15.         elif cognome[i].isalpha() == True:
  16.             vocali.append(cognome[i])
  17.     if consonanti >= 3:
  18.         v2 = vcons[0] + '' + vcons[1] + '' + vcons[2]
  19.         return v2
  20.     elif consonanti == 2:
  21.         v2 = vcons[0] + '' + vcons[1] + '' + vocali[0]
  22.         return str(v2)
  23.  
  24.  
  25. def cal_nome(nome):
  26.     consonanti = 0
  27.     vocali = []
  28.     v1 = []
  29.  
  30.     for i in range(len(nome)):
  31.         if nome[i].isalpha() == True and nome[i] != 'A' and nome[i] != 'E' and nome[i] != 'I' and nome[i] != 'O' and \
  32.                 nome[i] != 'U':
  33.             v1.append(nome[i])
  34.             consonanti += 1
  35.         elif nome[i].isalpha() == True:
  36.             vocali.append(nome[i])
  37.     if consonanti >= 4:
  38.         v2 = v1[0] + '' + v1[2] + '' + v1[3]
  39.         return v2
  40.     elif consonanti == 3:
  41.         v2 = v1[0] + '' + v1[1] + '' + v1[2]
  42.         return v2
  43.     elif consonanti == 2:
  44.         v2 = v1[0] + '' + v1[1] + '' + vocali[0]
  45.         return v2
  46.     else:
  47.         v2 = v1[0] + '' + vocali[0] + '' + vocali[1]
  48.         return str(v2)
  49.  
  50.  
  51. def cal_anno_mese(data):
  52.     anno = data[2][2:]
  53.     mesi = {'01': 'A', '02': 'B', '03': 'C', '04': 'D',
  54.             '05': 'E', '06': 'H', '07': 'L', '08': 'M',
  55.             '09': 'P', '10': 'R', '11': 'S', '12': 'T'}
  56.     mese = mesi[data[1]]
  57.     r=anno+''+mese
  58.     return str(r)
  59.  
  60.  
  61. def cal_giornosesso(data, sesso):
  62.     if sesso != "M":
  63.         giorno = str(int(data[0]) + 40)
  64.     else:
  65.         giorno = data[0]
  66.     return giorno
  67.  
  68.  
  69. def cal_codicecastale(luogo, provincia):
  70.     listacomuni = open("listacomuni.txt", "r")
  71.  
  72.     for aline in listacomuni:
  73.         valori = aline.split(';')
  74.         nome = valori[1]
  75.         pr = valori[2]
  76.         codice = valori[6]
  77.  
  78.         if nome.casefold() == luogo.casefold() and pr.casefold() == provincia.casefold():
  79.             return codice
  80.  
  81.  
  82. def cal_charctrl(cf):
  83.     vpari = []
  84.     vdispari = []
  85.     sommapari = 0
  86.     sommadispari = 0
  87.  
  88.     pari = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5,
  89.             '6': 6, '7': 7, '8': 8, '9': 9, 'A': 0, 'B': 1,
  90.             'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6, 'H': 7,
  91.             'I': 8, 'J': 9, 'K': 10, 'L': 11, 'M': 12, 'N': 13,
  92.             'O': 14, 'P': 15, 'Q': 16, 'R': 17, 'S': 18, 'T': 19,
  93.             'U': 20, 'V': 21, 'W': 22, 'X': 23, 'Y': 24, 'Z': 25}
  94.  
  95.     dispari = {'0': 1, '1': 0, '2': 5, '3': 7, '4': 9, '5': 13,
  96.                '6': 15, '7': 17, '8': 19, '9': 21, 'A': 1, 'B': 0,
  97.                'C': 5, 'D': 7, 'E': 9, 'F': 13, 'G': 15, 'H': 17,
  98.                'I': 19, 'J': 21, 'K': 2, 'L': 4, 'M': 18, 'N': 20,
  99.                'O': 11, 'P': 3, 'Q': 6, 'R': 8, 'S': 12, 'T': 14,
  100.                'U': 16, 'V': 10, 'W': 22, 'X': 25, 'Y': 24, 'Z': 23}
  101.  
  102.     controllo = {0: 'A', 1: 'B', 2: 'C', 3: 'D', 4: 'E', 5: 'F',
  103.                  6: 'G', 7: 'H', 8: 'I', 9: 'J', 10: 'K', 11: 'L',
  104.                  12: 'M', 13: 'N', 14: 'O', 15: 'P', 16: 'Q', 17: 'R',
  105.                  18: 'S', 19: 'T', 20: 'U', 21: 'V', 22: 'W', 23: 'X',
  106.                  24: 'Y', 25: 'Z'}
  107.  
  108.     for i in range(0, len(cf), 2):  # crea un vettore con gli elementi in posizione dispari
  109.         vdispari.append(cf[i])
  110.  
  111.     for j in range(1, len(cf), 2):  # crea un vettore con gli elementi in posizione pari
  112.         vpari.append(cf[j])
  113.  
  114.     for x in vpari:
  115.         sommapari += pari[x]
  116.     for y in vdispari:
  117.         sommadispari += dispari[y]
  118.  
  119.     resto = (sommapari + sommadispari) % 26
  120.  
  121.     r = controllo[resto]
  122.  
  123.     return r
  124.  
  125. #ISO-8859-1
  126. def postino(codicefiscale,destinatario):
  127.     mittente = 'postinopython@gmail.com'
  128.     password = 'Postino00!'
  129.     oggetto = " Subject: Codice Fiscale "
  130.     contenuto = "\n\n" + "Ecco a lei il suo codice fiscale: "+codicefiscale
  131.     messaggio = oggetto + contenuto
  132.     print("Sto effettuando la connessione col Server...")
  133.     email = smtplib.SMTP("smtp.gmail.com",587)
  134.     email.ehlo()  # effettuo l'hello col Server
  135.     email.starttls()  # avvio il canale TLS
  136.     email.login(mittente, password)  # effettuo il login
  137.     print("Sto inviando...")
  138.     email.sendmail(mittente, destinatario, messaggio)
  139.     email.quit()
  140.     print("Email Inviata!")
  141.  
  142.  
  143.  
  144. def main():
  145.     cognome = input(str("Inserire il cognome: ")).upper()
  146.     nome = input(str("Inserire il nome: ")).upper()
  147.     comune= input(str("Inserire il comune di nascita: "))
  148.     provincia = input(str("Inserire la provincia : "))
  149.     sesso = input(str("Inserire sesso (M o F): ")).upper()
  150.     data = input("Inserire la data di nascita (nel formato GG-MM-AAAA): ").split('-')
  151.     cf=cal_cognome(cognome)+cal_nome(nome)+cal_anno_mese(data)+cal_giornosesso(data,sesso)+cal_codicecastale(comune,provincia)
  152.     codicefiscale=cf+cal_charctrl(cf)
  153.     stato=input('Si desidera ricevere il codice fiscale tramite mail? (SI o NO): ').upper()
  154.  
  155.     if stato=='SI':
  156.         destinatario = input("Inserire la propria mail: ")
  157.         print(postino(codicefiscale,destinatario))
  158.     else:
  159.         print(codicefiscale)
  160.  
  161. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement