ISBN e Codice fiscale: semplici algoritmi di error detection usando python

On October 1, 2017

Nell'articolo "Teoria della comunicazione e matematica: semplici algoritmi di error detection per la scuola secondaria di primo e secondo grado" uscito sulla rivista Archimede (disponibile a pagamento qui o acquistabile in abbonamento qui) si è parlato della matematica applicata alla teoria delle comunicazione.

In particolare si sono analizzati, a partire dal lavoro di C. Shannon, i problemi derivanti dalla "distorsione" di un segnale a causa del rumore.

Per questo problema può capitare che uno o più bit possono arrivare alterati (per esempio un "1" che diventa uno "0" o viceversa).

Si è osservato che l'errore statisticamente più comune è quello che consiste nell'alterazione di un singolo bit e per questo motivo si sono sviluppati algoritmi in grado di accorgersi di questo errore e per far questo la matematica ha svolto un ruolo fondamentale.

Nell'articolo di Archimede si analizzano nel dettaglio alcuni semplici algoritmi che sono quotidianamente utilizzati in modo inconsapevole da tutti noi. In particolare sono stati descritti:

  • il codice ISBN presente in tutti i libri in commercio
  • il codice fiscale in possesso di ogni cittadino italiano.

Rimandiamo all'articolo della rivista per una spiegazione degli stessi e per  suggerimenti didattici finalizzati ad introdurli nella scuola secondaria di primo e secondo grado.

In questo post inseriamo, come indicato nell'articolo, suggerimenti di libreria e codice utile per realizzare questi algoritmi.

Nel seguente  link si trova il codice per verificare la correttezza di un ISBN.

Per testare il programma è sufficiente copiare ed incollare il testo presente nel sito in un file e aggiungere in fondo la chiamata alla funzione is_valid_isbn come mostrato nella seguente figura.

Esempio di codice python per la verifica di un ISBN

In questo caso il programma dopo aver eliminato l'eventuale trattino "-" dalla stringa di input verifica la lunghezza dell'ISBN (ricordiamo che ne esistono di due tipi: ISBN10 e ISBN13) e applica il corretto algoritmo ritornando in output True o False a seconda della correttezza o meno del codice inserito.

Ovviamente esiste la possibilità di installare librerie python dedicate all'ISBN come isbnlib (clicca qui scaricarla). Il suo utilizzo è molto semplice e, per esempio, per testare un ISBN13 è sufficiente chiamare la funzione is_isbn13 come mostrato nella seguente figura.

Anche per il codice fiscale esistono diverse librerie.

Segnaliamo, in particolare, la seguente libreria: https://github.com/DavideCanton/PyCodiceFiscale

In alternativa è disponibile anche: https://pypi.python.org/pypi/codicefiscale/0.3

Al seguente link, è invece presentato un programma che (a partire in questo caso solo dalla lista dei capoluoghi) genera il codice fiscale inserendo via via i dati necessari come mostrato dall'immagine seguente.

Considerazioni didattiche

Nell'articolo della rivista Archimede sono inserite una serie di considerazioni didattiche associate a possibili attività da svolgere in classe.

Quello che si vuole mostrare in questo post è la facilità con cui è possibile trovare, utilizzando python, del codice "già fatto" da poter sfruttare e riadattare (eventualmente anche semplificandolo) in classe.

Dal punto di vista didattico questa facilità deve essere sfruttata, in base all'esperienza di chi scrive, anche per mostrare agli studenti quanto interesse ci sia nella "vita reale" per quello che si sta studiando.

Anche se molta parte dei programmi presentati è ad  un livello "superiore" delle competenze di molti studenti, possono essere analogamente presentati in modo che gli studenti "studino" il codice e ne capiscano passo passo le varie fasi.

Davide Passaro

Leave a Reply

Your email address will not be published. Required fields are marked *

this site uses the awesome footnotes Plugin