#

Alla scoperta del Python

Impariamo il Python facendo i compiti di scuola


Ieri arriva a casa mio figlio e mi dice: "Per venerdì prossimo devo fare questi tre programmi in Python" e mi mostra il cellulare con la consegna del lavoro.

"Mai usato", risposi, ma siccome qualche nozione l'avevo aggiunsi: "E' quel linguaggio senza i marcatori dei blocchi?". Per tutta risposta mi sono state fornite le sue dispense sì che potessi conoscerlo meglio.

Il logo di Python
Logo
Il logo di Python

Il Python (Nuova pagina) è un linguaggio di scripting (Nuova pagina)ideato da Guido van Rossum (Nuova pagina)la cui caratteristica più appariscente è proprio il fatto di non avere dei delimitatori per i blocchi di codice (le parentisi graffe dei linguaggi C-like o il begin..end della famiglia Pascal ad esempio), ma i blocchi vengono riconosciuti dall'identazione.

Questo fa sì che quella che per tutti gli altri linguaggi è una best-pratice qui diventa un elemento fondamentale.

Per impararlo esiste un fondamentale tutorial (Nuova pagina)di cui consiglio caldamente la lettura.

Letto il tutorial e scritto il tradizionale "Hello world" (Listato 1 (Nuova pagina)), passiamo al primo problema:

Scrivete un programma che chieda all'utente di indovinare una password,
ma che dia al giocatore solamente 3 possibilità,
fallite le quali il programma terminerà,
stampando ``È troppo complicato per voi''.

Lo svolgimento lo trovate nel Listato 2 (Nuova pagina); in questo esercizio vengono messe in evidenza alcune peculiari caratteristiche dell'istruzione for

Innanzitutto notiamo che il for lavora solo con gli iteratori; percui dovendo fare il classico ciclo da 1 a n occorre costruire un iteratore con la funzione range() (che in effetti cicla da 0 a n-1)

L'altra è la clausola else che, se fate caso all'identazione (che, come detto è fondamentale in questo linguaggio), fa parte del for e non del if: essa viene eseguita se il ciclo termina naturalmente, ma non se chiuso prematuramente da un break.

Passiamo ora al secondo esercizio:

Scrivete un programma che chieda all'utente il nome.
Se viene inserito il vostro nome,
il programma dovrà rispondere con un ``Questo è un bel nome'',
se il nome inserito è "John Cleese" o "Michel Palin"
il programma dovrà rispondere con una battuta ;)
mentre in tutti gli altri casi l'output del programma
sarà un semplice ``Tu hai un bel nome!''. 

Il cui svolgimento si trova nel Listato 3 (Nuova pagina) e dove si utilizzano le liste e l'if multiplo.

Una delle caratteristiche più potenti del linguaggio Python è la gestione delle liste che permettono di gestire anche situazioni abbastanza complesse; in questo caso usiamo una semplice lista di due elementi stringa utilizzata come insieme in cui con l'operatore in cerchiamo la presenza di un elemento.

Python non possiede un costrutto switch .. case, ma lo emula con la sequenza if, elif, else come mostrato nel programma.

Infine il terzo esercizio:

Scrivete un programma che chieda due numeri.
Se la somma dei due numeri supera 100,
stampate ``Numero troppo grande''.

Il cui svolgimento si trova nel Listato 4 (Nuova pagina) e nel quale mi sono sbizzarrito.

Per la corretta soluzione dell'esercizio basterebbe infatti solo la parte dopo il commento # Main code, ma mi sono accorto che se per sbaglio si inserisce qualcosa che non sia un numero il programma si blocca con una eccezione.

Dato che esiste una gestione delle eccezioni con il consueto try perchè non metterla alla prova? Ho quindi costruito un ciclo while che continua a chiedere all'utente l'inserimento fino a che non viene inserito un numero valido.

E poichè la stessa operazione va fatta due volte ho pensato bene di definire una funzione per evitare inutili duplicazioni di codice.

I "compiti" li ho fatti, e devo dire che mi sono anche divertito: ho imparato qualcosa su questo linguaggio, oggi di gran moda e ne ho approfittato per condividere i miei appunti, cosa che non facevo da diverso tempo.

Sconsiglierei invece agli studenti che dovessero leggere queste note di fare copia e incolla dei listati: qua e là sono utilizzate delle funzioni (come la formattazione delle stringhe) che non erano citate nelle dispense di mio figlio, ma anche la strutturazione del codice potrebbe dare adito a qualche sospetto.

E' molto meglio provarci da soli: dà molta più soddisfazione.

Inizio pagina
Successivo
Sommario
Precedente
 
Creative Commons  License BY-NC-SA
Ove non diversamente specificato i contenuti del sito sono rilasciati con licenza Creative Commons BY-NC-SA 4.0 

Copyright © 2007-2020 The Strawberry Field - Roberto Ceccarelli