Python/Esempi

Wikibooks, manuali e libri di testo liberi.

Questo modulo illustrerà degli esempi di programmi più o meno difficili scritti in Python.

[modifica] Calcolo del codice fiscale

Questo programma presuppone l'esistenza di un file codicicomuni.txt nella stessa cartella dello script, nella forma:

NOMECOMUNE
CODICECATASTALE
NOMECOMUNE
CODICECATASTALE

e così via...

# -*- coding: utf-8  -*-
#!/usr/local/bin/python
 
nome = raw_input('Inserisci il tuo nome: ')
cognome = raw_input('Inserisci il tuo cognome: ')
giornonascita = raw_input('Inserisci il giorno in cui sei nato: ')
mesenascita = input('Inserisci il mese in cui sei nato (numero): ')
annonascita = raw_input(u"Inserisci l\'anno in cui sei nato: ")
sesso = raw_input(u"Inserisci il tuo sesso (M/F): ")
cittanascita = raw_input(u"Inserisci il tuo comune di nascita: ")
cittanascita = cittanascita.upper()
mesi = ['A', 'B', 'C', 'D', 'E', 'H', 'L', 'M', 'P', 'R', 'S', 'T']
consonanti = ['b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'z']
codicicomuni = {}
regolecontrollo = {}
regolecontrollo['A']=[0,1]
regolecontrollo['B']=[1,0]
regolecontrollo['C']=[2,5]
regolecontrollo['D']=[3,7]
regolecontrollo['E']=[4,9]
regolecontrollo['F']=[5,13]
regolecontrollo['G']=[6,15]
regolecontrollo['H']=[7,17]
regolecontrollo['I']=[8,19]
regolecontrollo['J']=[9,21]
regolecontrollo['K']=[10,2]
regolecontrollo['L']=[11,4]
regolecontrollo['M']=[12,18]
regolecontrollo['N']=[13,20]
regolecontrollo['O']=[14,11]
regolecontrollo['P']=[15,3]
regolecontrollo['Q']=[16,6]
regolecontrollo['R']=[17,8]
regolecontrollo['S']=[18,12]
regolecontrollo['T']=[19,14]
regolecontrollo['U']=[20,16]
regolecontrollo['V']=[21,10]
regolecontrollo['W']=[22,22]
regolecontrollo['X']=[23,25]
regolecontrollo['Y']=[24,24]
regolecontrollo['Z']=[25,23]
regolecontrollo['0']=[0,1]
regolecontrollo['1']=[1,0]
regolecontrollo['2']=[2,5]
regolecontrollo['3']=[3,7]
regolecontrollo['4']=[4,9]
regolecontrollo['5']=[5,13]
regolecontrollo['6']=[6,15]
regolecontrollo['7']=[7,17]
regolecontrollo['8']=[8,19]
regolecontrollo['9']=[9,21]
 
resti = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
 
for i in consonanti:
 consonanti = consonanti + [i.upper()]
vocali = ['a', 'e', 'i', 'o', '']
for i in vocali:
 vocali = vocali + [i.upper()]
chars = list()
 
#PRIME 3 LETTERE
cons = list()
voc = list()
for cgn in cognome:
 if cgn in consonanti:
  cons = cons + [cgn.upper()]
 if cgn in vocali:
  voc = voc + [cgn.upper()]
if len(cons) > 2:
  chars = chars + cons[0:3]
if len(cons) == 2:
  chars = chars + cons[0:2] + voc[0:1]
if (len(cons) == 1) and (len(voc) == 2):
  chars = chars + cons[0:1] + voc[0:2]
if (len(cons) == 1) and (len(voc) == 1):
  chars = chars + cons[0:1] + voc[0:1] + ['X']
if (len(cons) == 0) and (len(voc) == 2):
  chars = chars + voc[0:2] + ['X']
 
#SECONDE 3 LETTERE
cons = list()
voc = list()
for nom in nome:
 if nom in vocali:
  voc = voc + [nom.upper()]
 if nom in consonanti:
  cons = cons + [nom.upper()]
if len(cons) > 3:
  chars = chars + cons[0:1] + cons[3:4]
if len(cons) == 3:
  chars = chars + cons[0:3]
if len(cons) == 2:
  chars = chars + cons[0:2] + voc[0:1]
if (len(cons) == 1) and (len(voc) == 2):
  chars = chars + cons[0:1] + voc[0:2]
if (len(cons) == 1) and (len(voc) == 1):
  chars = chars + cons[0:1] + voc[0:1] + ['X']
if (len(cons) == 0) and (len(voc) == 2):
  chars = chars + voc[0:2] + ['X']
chars = chars + [annonascita[2], annonascita[3]]
chars = chars + [mesi[mesenascita-1]]
if sesso=='F' or sesso=='f':
 chars = chars + [unicode(atoi(giornonascita) + 40)]
else:
 if len(giornonascita)<2:
  chars = chars + ['0', giornonascita]
 else:
  chars = chars + [giornonascita[0], giornonascita[1]]
comunicodes = open('codicicomuni.txt', 'r')
while 1:
 citta = comunicodes.readline()
 citta = citta[0:len(citta)-1]
 codice = comunicodes.readline()
 codice = codice[0:len(codice)-1]
 if (not citta) or (not codice):
  break
 codicicomuni[citta] = codice
chars = chars + [codicicomuni[cittanascita][0], codicicomuni[cittanascita][1], codicicomuni[cittanascita][2], codicicomuni[cittanascita][3]]
sommone = 0
for i in range(1,16):
 if not i % 2:
  sommone = sommone + regolecontrollo[chars[i-1]][0]
 else:
  sommone = sommone + regolecontrollo[chars[i-1]][1]
resto = sommone % 26
chars = chars + [resti[resto]]
codicefinale = str()
for i in chars:
 codicefinale = codicefinale + i
print "Il tuo codice fiscale e\': %s" % codicefinale
Strumenti personali