Lezione 6

#! /usr/bin/env python

def leggere_dati(nome_di_file) :

""" Legge il file e restituice una lista con i dati. Ogni
elemento della lista e un dizionario che corresponde con una
riga del file. La prima parola della riga viene salvato nel
dizionario sotto parolachiave 'Cognome', le altre fino a
penultima sotto 'Nomi' e la ultima parola viene intepretato
come una cifra e salvato sotto 'Stipendio'."""

import fileinput
import re
dati = []
file = fileinput.input(nome_di_file)
parole = re.split('\W+',file.readline())
while (parole != ['']) :

if len(parole) > 1 and » re.match("\d+(\.\d+)?", parole[-2]) != None and » re.match("[\d\w\s-]+", reduce(lambda a,b: a+b, » parole[0:-2])) != None :

dati.append(
{'Cognome' : parole[0],
'Nomi' : parole[1:-2],
'Stipendio' : float(parole[-2])})

else :

print "Carattere invalido nel input in leggere_dati"
print parole
return None

parole = re.split('\s',file.readline())

return dati

def calcolare_tasse(limiti, stipendio) :

""" Calcola tasse secondo i limiti progressivi e stipendio.
Restituice il risultato come float. I limiti devono essere dati
come una lista di coppie di limite e percentuale. I limiti
devono essere progressivi. Limite 'None' corrisponde alla tassa
generale."""
tasse = 0.0
limite_basso = 0.0
if stipendio < 0 :

print 'Stipendio invalidio in calcolare_tasse'
return None


for limite_alto, percentuale in limiti :


if limite_alto != None and limite_basso >= limite_alto :

print "Limiti invalidi in calcolare_tasse"
return None


if limite_alto == None or stipendio <= limite_alto :

tasse = tasse + (stipendio - limite_basso) »> * percentuale
return tasse

tasse = tasse + (limite_alto-limite_basso) * percentuale
limite_basso = limite_alto

return tasse

import sys

limiti = [(1234, 0.1), (2345, 0.2), (3456, 0.3), (4567, 0.4),
(5678,0.5), (6789, 0.6), (None, 0.8)]

if len(sys.argv) > 1 :

dati = leggere_dati(sys.argv[1])

else :

dati = leggere_dati(None)

if dati != None :

for x in dati :

print x['Cognome'], x['Nomi'], ', ', x['Stipendio']
for y in range(len(limiti)-1) :

print 'Fino a : ',
print limiti[y],
print ' : ',
print calcolare_tasse(limiti[0:y+1], x['Stipendio'])

print 'Totale ( resto a', limiti[-1][1], ') : ',
print calcolare_tasse(limiti, x['Stipendio'])
print '—- '

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Share Alike 2.5 License.