Storytime, scrivi una fiaba programmando con Python

Cosa farai

Questo tutorial ti permetterà di raccontare una storia usando il codice e programmando con Python. Ti mostrerà un uso semplice della dichiarazione condizionale if/else per valutare l’input degli utenti e creare una narrazione unica. È un modo divertente di iniziare a programmare con Python e ti permette di utilizzare tutta la tua immaginazione e la tua creatività!

Cosa imparerai

Nel raccontare una storia usando il codice con il tuo Microninja imparerai a:

  • usare l’applicazione IDE di Python
  • ottenere un input da un utente e mostrarlo a schermo
  • usare le dichiarazione condizionali if, elif per impostare il genere dei personaggi
  • usare le liste per salvare i nomi dei caratteri e i luoghi in cui si svolge la tua storia
  • usare il modulo random per selezionare casualmente un elemento di una lista
  • usare le variabili per salvare e richiamare le informazioni nella storia

Usare IDE su Microninja

Un fantastico modo di scrivere e testare codice è quello di usare Thonny Python IDE, un’applicazione di sviluppo per Python.
Lancia Thonny Python IDE da Menu/Coding/Thonny Python IDE.
Si accede al menù facendo clic sull’icona di Microninja in basso a sinistra dello schermo.
Una volta aperta la finestra di Python, avrai a disposizione un editor di testo, dove puoi scrivere, salvare e testare il tuo codice.

Salva subito il tuo file con il nome storytime.py: fai clic su File e quindi su Save As. Seleziona la cartella .thonny, e scrivi storytime.py nel campo di testo Nome del file. Fai quindi clic su Salva.

Ottieni l’Input di un utente e mostralo a schermo

Il nostro scopo è quello di scrivere una storia usando Python, e renderla disponibile a schermo in modo che possa essere letta.
Iniziamo, quindi, a capire come usare la funzione print() che permette proprio di visualizzare a schermo un testo.

Con il file storytime.py aperto nella finestra dell’editor di testo, digita questa istruzione:

print("Ciao lettore")

Salva il file facendo clic su File e quindi su Save.
Per vedere il risultato dell’istruzione che hai scritto devi lanciare il programma. Per farlo, fai clic sull’icona Run.
Vedrai le parole Ciao lettore nella finestra di Python.
Nota che le virgolette non sono state stampate; servono infatti solo a indicare l’inizio e la fine del testo che si vuole visualizzare.

Le funzioni sono blocchi di codice che servono a eseguire operazioni predefinite. Senza entrare troppo nei dettagli, diciamo che alcune funzioni sono già a disposizone in Python e, per usarle, devi solo richiamarle… proprio come hai appena fatto. Devi però stare attento a rispettare la loro sintassi, cioè le regole che le fanno funzionare in modo corretto. Ogni funzione ha infatti le sue regole: la funzione print() visualizza a schermo quanto sta all’interno delle parentesi tonde, che viene chiamato il suo argomento, e che, nel caso sia un testo, come nel nostro esempio, deve essere scritto fra virgolette. Ogni funzione accetta specifici tipi di argomenti, di cui parleremo volta per volta.

Ora che abbiamo visto come visualizzare una scritta a schermo, impariamo a raccogliere informazioni sulla persona che sta usando il programma.
Scrivi:

nome = input("Come ti chiami?")
print("Ciao " + nome)

Salva il file e esegui il programma per vedere cosa succede.

La domanda Come ti chiami? viene visualizzata a schermo.

La funzione input() accetta come argomento solo una stringa di testo: nel nostro caso, "Come ti chiami?". Questa stringa di testo viene visualizzata a schermo e il programma adesso aspetta che l’utente usi la tastiera per scrivere una risposta prima di eseguire le istruzioni successive.

Scrivi dunque la risposta alla domanda Come ti chiami? direttamente nella finestra interattiva di Thonny (quella con l’etichetta Shell) e premi Invio.

Nel nostro esempio abbiamo risposto Sergio, e, non appena abbiamo premuto Invio, è apparsa la scritta Ciao Sergio.

Come mai?

Rileggi con attenzione le istruzioni che compongono il nostro programma:

nome = input("Come ti chiami?")
print("Ciao " + nome)

Nella seconda riga appare la funzione print() che dice al programma di visualizzare a schermo il suo argomento, che in questo caso è "Ciao " + nome.

"Ciao " è una stringa di testo del tutto simile a quella che hai visto prima.

nome è una variabile.

Una variabile è come una scatola nella memoria del computer nella quale puoi mettere un singolo valore. Questo valore può essere utilizzato in un secondo momento.
Ogni variabile ha un nome e un valore che vengono definiti attraverso un’istruzione del tipo:

nome = input("Come ti chiami?")

Il nome della variabile è come un’etichetta messa sulla scatola di cui sopra. Nell’esempio, l’abbiamo chiamata nome.
Il valore della variabile è quello scritto a destra del simbolo =, cioè nel nostro caso, il risultato della funzione input()… e quindi il nome che viene inserito dall’utente in risposta alla domanda Come ti chiami?.

Quando l’operatore + viene inserito in mezzo a due stringhe di testo, le unisce. Il risultato è un’unica stringa di testo: è per questa ragione che abbiamo aggiunto uno spazio vuoto dopo la parola Ciao in "Ciao " + nome… per separarla dal nome inserito dall’utente!


Sei in grado di creare altre le variabili genere e giorno in cui salvare informazioni riguardo al genere dell’utente e all’attuale giorno della settimana? Queste informazioni ti saranno utili in seguito.

If, Elif, e Else

L’utente sarà il protagonista della nostra storia.

Ti abbiamo chiesto di creare la variabile genere perché dobbiamo sapere se è maschio o femmina per capire se utilizzare il pronome “lui” o “lei” nel corso del nostro racconto.

Dobbiamo ora scrivere delle istruzioni che dicano al computer come comportarsi nei due diversi casi.
Sotto i comandi input e print scrivi:

if genere == "femmina":
    pronome = "lei"

Queste due istruzioni dicono che, se la risposta alla domanda Sei maschio o femmina? è femmina, allora alla variabile pronome viene dato il valore lei.

Se invece la risposta data dall’utente è maschio, allora:

elif genere == "maschio":
    pronome = "lui"

elif significa ‘in caso contrario’.

Salva il lavoro svolto finora facendo clic su File e quindi su Save.

Liste

Gran parte della storia verrà generata dal programma in maniera casuale… e questo è parte del bello. Perché sia possibile, devi creare alcune liste in cui salvare le parole che vuoi che vengano usate nella costruzione della storia.

Le liste vebgono definite nello stesso modo visto per le variabili; per esempio, numero = [1, 2, 3, 4] definisce la lista chiamata numero contiene quattro numeri 1, 2, 3 e 4.

Dopo l’ultima riga del programma che hai già scritto, lascia una riga vuota e poi digita:

nomi = ["Benedetto", "Davide", "Elisa", "Ale", "Paola", "Stefano", "Francesca"]

Questa lista contiene dei nomi propri scritti tra virgolette. Puoi cambiarli e mettere quelli dei tuoi amici, o dei nomi inventati.

Aggiungere una riga vuota serve semplicemente a rendere più leggibile il tuo programma.

Crea ora altre liste per i luoghi, le azioni, e i ruoli.
Un esempio può essere il seguente:

ruoli = ["cavaliere", "fabbro", "principe", "drago", "mago", "verme"]

Random

Una volta create le liste azioni, luoghi, nomi e ruoli, può scrivere delle istruzioni che ti permettano di pescare in modo casuale un elemento al loro interno. Queste istruzioni ti aiuteranno a rendere unica la tua storia!

All’inizio del programma che hai già scritto, come prima riga adesso aggiungi import random. Questa istruzione importa il modulo random.

Vai quindi in fondo al programma, e, sotto la definizione delle liste, scrivi:

nome_personaggio = random.choice(nomi)
ruolo_personaggio = random.choice(ruoli)
finalita_personaggio = random.choice(azioni)
luogo_magico = random.choice(luoghi)

E adesso il racconto!

Bene, adesso sei arrivato alla parte divertente. Mettiamo insieme tutto quello che abbiamo fatto per costruire il racconto. È il momento di usare l’immaginazione.

Questa parte del programma verrà scritto in una sola riga. Inizia con il creare una variabile per salvare la tua storia. Scrivi:

storia =

Quindi, nella stessa riga, apri le virgolette ".
Scrivi l’inizio della tua storia, per esempio C’era una volta.
Lascia uno spazio vuoto e chiudi le virgolette ".
Ora puoi aggiungere un ruolo a caso scrivendo

+ ruolo_personaggio +

Ritorna quindi a scrivere la tua storia di nuovo tra virgolette " chiamato ".
Aggiungi un nome " + name +" prima di continuare con la storia.
Vai avanti e utilizza tutte le variabili che hai creato in precedenza, come nell’esempio che segue:

storia = "C’era una volta un " + ruolo_personaggio + " chiamato " + nome + ". " + pronome + " e alcuni amici si trovarono nella " + luogo_magico + ". Il sovrano di questa regione era il " + ruolo_personaggio + " " + nome_personaggio + ". All’improvviso una voce misteriosa parlò loro dall’alto dei cieli e disse ‘voi dovete " + finalita_personaggio + " il " + ruolo_personaggio + " " + nome_personaggio + " per liberarvi dalla maledizione di non essere in grado di usare le nuove tecnologie...' "

Tutto deve essere scritto in una sola riga! E non ti dimenticare di usare la variabile pronome!

La visualizzazione finale

Devi aggiungere ancora una riga di codice per visualizzare a schermo la tua storia.
Per farlo, digita:

print(storia)

Lancia il programma per vedere il risultato!
Potrebbe succedere che il programma non funzioni; con ogni probabilità avrai fatto un errore di battitura. A me è appena successo! Ho scritto una o di troppo nel definire la variabile luogo_magico! Non preoccuparti; accade spesso quando si programma.

Se hai fatto un errore, cercalo e correggilo.

Scoprire l’errore e correggerlo è quello che viene chiamato debugging.
Devi semplicemente trovare l’errore, risolverlo, salvare il file e lanciare di nuovo il programma.

E adesso?

Sei in grado di creare un’altra storia usando le tecniche che hai imparato?

Riesci a escogitare altri modi per rendere ancora più casuale la struttura della tua storia?


This learning resource is provided for free by the Raspberry Pi Foundation under a Creative Commons licence.
Find more at raspberrypi.org/resources and github.com/raspberrypilearning.