Una verifica di inglese.. in python!

Stasera, dopo le mie 8 ore abbondanti di lavoro davanti a un terminale di un AS400, più l’ora di macchina all’andata e l’ora al ritorno, mia madre è saltata fuori per chiedermi di prepararle una verifica di inglese sui verbi irregolari per la scuola dove insegna. Si tratta di prendere un elenco di verbi irregolari, sceglierne una quindicina a caso, mischiarli e scrivere su un foglio con quattro colonne (presente, passato, participio passato, traduzione in italiano) un solo valore, anch’esso scelto a caso; ovviamente gli altri tre valori dovranno essere inseriti da chi svolgerà la verifica. Come ulteriore complicazione, quà e là è necessario seminare qualche verbo regolare, che però richiede degli accorgimenti particolari: ne esistono diversi tipi, a seconda della desinenza e di conseguenza del modo di costruire i tempi verbali, e di ciascun tip deve essere presente un elemento, con già scritta la versione al presente oppure quella in italiano. Un bel pò di requisiti, eh?

Fare un lavoro del genere a mano è noioso e lungo, nonchè suscettibile di errori di vario genere. Eppoi è proprio per questo genere di lavori che esiste il computer, no? Di conseguenza ho scritto un piccolo programma in python che mi realizza la verifica come csv, che ho poi importato in excel per dargli una parvenza grafica decente. Ecco il codice:

pyenghw01

Nella prima parte (qui sopra) viene definita la lista di verbi, ciascuno dei quali in realtà a sua volta è una lista di 4 stringhe che rappresentano rispettivamente la forma al presente, al passato, al participio passato e in italiano. Mediante il comando random.shuffle() la lista viene mescolata casualmente, e mediante il comando immediatamente successivo viene troncata ai primi 15 elementi.

A questo punto per ciascun verbo (ovvero quartetto di stringhe) si chiama un random.random(), che moltiplicato per in numero di elementi del quartetto e troncato all’intero darà un numero casuale compreso tra 0 e 3; questo valore deciderà quale dei quattro elementi del quartetto dovrò scrivere (gli altri saranno lasciati in bianco). La stringa così realizzata (in forma CSV, ovvero valori separati da virgola) viene aggiunta come elemento della lista result.

pyenghw02

Il procedimento per i verbi regolari è simile ma un pochino più contorto. Esistono infatti diverse famiglie di verbi regolari, a seconda del modo in cui si costruiscono le loro forme verbali. Nell’esempio ho lasciato due famiglie, una composta da due e una da tre verbi (il quartetto di prima è diventato una coppia, poichè mi interessa rappresentare solo il presente oppure la forma italiana). In questo caso vado a:

  • selezionare una famiglia, cioè una lista di coppie, e metterla nella variabile verbfamily;
  • mescolo la lista verbfamily e ne prendo il primo elemento;
  • genero un numero casuale (0 oppure 1) che deciderà se andrò a scrivere la forma presente o quella in italiano;
  • aggiungo alla lista result anche questa stringa;
  • ripeto per tutte le famiglie di verbi.

A questo punto prendo la lista result, ovvero la lista delle stringhe che devo stampare, gli dò una bella mischiata e la stampo un elemento alla volta.

Salvo il tutto nel file verbiinglesi.py, e da terminale eseguo:

python verbiinglesi.py > verbi

il programma viene eseguito e il suo output viene memorizzato automaticamente in un file chiamato “verbi”. Una rapida occhiata a questo file con un editor di testo mostra che tutto ha funzionato per il meglio:

Yuna:~/Documents/provaPython mario$ cat verbi
,,,CREDERE
ARRIVE
FLY,,
,,,COLPIRE
,ATE,
,,DUG
,,LEFT
WATCH
,,,ANDARE

e così via.. A questo punto devo solo importare la lista in excel (stessa cosa in OpenOffice, credo) per sistemare un pò la presentazione e stamparla. Basta aprire il proprio foglio di calcolo, selezionare “Importa” dal menu “File”, scegliere l’opzione CSV, selezionare il file “verbi” (se non ve lo lascia selezionare è necessario scegliere “All Files” dalla lista sopra), impostare la virgola come carattere delimitatore et voilà! Ingrandiamo il carattere, allarghiamo le colonne, scriviamo l’intestazione, tiriamo di qua e molliamo di la e questo è il risultato:

pyenghw03

Ovviamente il grandissimo vantaggio di questo sistema è che è possibile realizzare in tempo zero decine di verifiche completamente diverse tra di loro, incubo di ogni studente che in tal modo non può proprio copiare dal compagni di banco! E’ sufficiente eseguire di nuovo lo script e importare il file in un nuovo foglio di calcolo: voilà!

Ciao a tutti!

Questa voce è stata pubblicata in Uncategorized e contrassegnata con , , . Contrassegna il permalink.

Una risposta a Una verifica di inglese.. in python!

  1. cbse result 12 ha detto:

    can u tell some of the best CBSE boarding schools in India?

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...