03. Variabili e Stringhe

In questa lezione introdurremo il concetto di variabile e un nuovo tipo di dato chiamato stringa, che ci consente di utilizzare del testo nei nostri programmi.


Cosa sono le variabili?

Vi siete mai chiesti come sia possibile in un programma salvare dei valori nella memoria del computer e accedervi poi in un secondo momento? Questo avviene in parte per mezzo di quelle che chiamiamo variabili.

Pensate a una variabile come ad un contenitore che può contenere un valore, e l'inserimento del valore in questo contenitore avviene tramite un processo chiamato assegnazione, rappresentato dal simbolo dell'uguale.

>>> x = 3.14

Semplificando il processo per fini didattici, possiamo dire che con questo comando è come se avessimo creato una "scatola" nella memoria del computer, chiamandola x. All'interno di questa scatola abbiamo quindi depositato il numero 3.14.

Fino a che lasceremo la scatola lì senza metterci nient'altro dentro potremo accedere di nuovo al valore ad essa assegnato utilizzando il nome della scatola, quindi della variabile, come collegamento al valore contenuto.

Provate a scrivere il nome della variabile sulla Shell Interattiva, e date invio:

>>> x
3.14

Ed ecco che ci riappare il numero che avevemo appena depositato.

Nell'universo Python vi capiterà spesso di incontrare nomi quali spam, eggs e bacon, in onore di uno sketch del famoso gruppo comico Monty Python, da cui prende il nome il linguaggio stesso. Se siete interessati a qualche altra curiosità riguardante il linguaggio, potete dare uno sguardo a questo video Cinque Fatti e Curiosità su Python.

In maniera analoga in Italia si usano nomi come pippo e pluto.

Se questi sono nomi perfetti per fare dei semplici esempi, tenete sempre a mente che per quanto possibile, in contesti reali è importante dare alle variabili dei nomi significativi.

Nel nostro caso, il nome più appropriato per la nostra variabile è sicuramente pi

>>> pi = 3.14

È un po' come prendere un barattolo, metterci dentro dello zucchero o del caffè, scriverci sopra il nome del contenuto con un'etichetta, e poi lasciarlo in cucina.

Chiunque passando in cucina potrà così facilmente intuire cosa sia presente all'interno del barattolo, ed accedervi quando necessario.


Lavorare con le variabili

Una volta che avrete richiamato una variabile, sarà possibile fare qualsiasi tipo di operazione sul valore ad essa assegnato, come ad esempio:

>>> pi * 3
9.42

L'operazione pi * 3 ci restituisce il numero 9.42, che è il triplo del valore contenuto in pi.

In Python ci sono delle regole per quanto riguarda i nomi che è possibile dare alle variabili: questi infatti possono contenere solo lettere, numeri e underscore, ovvero il trattino basso, ma non possono iniziare con un numero! Venire meno a queste regole comporta la comparsa di errori di sintassi.

Proviamo a creare una variabile e ad usare come primo carattere del nome un carattere numerico:

>>> 1esempio = 2
  File "stdin", line 1
    1esempio = 2
           ^
SyntaxError: invalid syntax

Per lo stesso motivo sopracitato, otteniamo un errore anche in questo caso:

>>> esem-pio = 5
  File "", line 1
SyntaxError: can't assign to operator

Una delle caratteristiche più interessanti delle variabili è che potete assegnarle dei nuovi valori quante volte vi pare.

Se finora state pensando alle variabili come scatole a cui viene dato un nome e su cui è possibile inserire un valore, potete anche immaginare che a seconda del caso ci sia bisogno di inserirvi degli altri valori, giusto?

Un'altra caratteristiche molto importante che distingue Python da altri linguaggi di programmazione, è che le variabili non sono di un tipo specifico: potete quindi assegnar loro qualsiasi classe di valore vogliate.

Facciamo un esempio definendo una nuova variabile val.

>>> val = 9.81

Usiamo ora la funzione integrata type() per vedere che tipo di valore è presente nella variabile val:

>>> type(val)
class 'float'

Si tratta chiaramente di un float! Proviamo ora ad assegnarle un intero.

>>> val = 1861

Andiamo ora a ricontrollare:

>>> type(val)
class 'int'

Ed ecco ora che nella nostra variabile val è presente un integer (int).


Le stringhe in Python

Come accennato in precedenza, parliamo ora di un nuovo tipo di dato, le stringhe (in inglese str, abbreviazione di string): si tratta di valori di tipo testuale, cioè un insieme di caratteri inseriti tra apici o doppi apici, numeri e simboli compresi.

Creiamo per esempio una variabile chiamata frase e inseriamoci dentro la stringa 'Una volta imparato, Python si dimostra estremamente versatile' racchiusa tra singoli apici:

>>> frase = 'Una volta imparato, Python si dimostra estremamente versatile'

Se ora andiamo ad effettuare un controllo con la funzione type() notiamo che la classe di dato contenuta nella variabile frase è appunto una stringa (str)

>>> type(frase)
class 'str'

Creiamo ora una seconda variabile chiamata frase2 e inseriamoci dentro la stringa "Python è uno dei migliori linguaggi per iniziare a programmare", ma stavolta includiamola tra doppi apici.

>>> frase2 = "Python è uno dei migliori linguaggi per iniziare a programmare"

Proviamo a richiamarne il valore dalla shell:

>>> frase2
'Python è uno dei migliori linguaggi per iniziare a programmare'

Ma come mai anche questa stringa ci viene restituita tra singoli apici quando noi l'abbiamo scritta usando invece doppi apici? Questo semplicemente perché Python è stato ideato in questa maniera, le stringhe vengono restituite in shell tra singoli apici.

Per rigor di logica, ci sono alcuni caratteri che non possono essere inclusi direttamente nelle stringhe, come ad esempio doppi apici in una stringa definita usando propri questi. In questo caso ci troveremo quindi impossibilitati a fare ad esempio delle citazioni:

>>> "e Dante scrisse: "Nel mezzo del cammin di nostra vita...""
  File "", line 1
    "e Dante scrisse: "Nel mezzo del cammin di nostra vita...""
                         ^
SyntaxError: invalid syntax

Per Python è come se avessimo interrotto la stringa prima della sua stessa fine, e questo fa si che ci restituisca un errore. Per ovviare a questo problema possiamo utilizzare gli apici singoli per definire la stringa, oppure utilizzare un backslash ( \ ) prima dei caratteri "scomodi".

Riscriviamo ora la stessa stringa di prima, ma impiegando i backslash:

>>> "e Dante scrisse: \"Nel mezzo del cammin di nostra vita...\""
'e Dante scrisse: "Nel mezzo del cammin di nostra vita..."'

Le stringhe possono inoltre essere concatenate tra di loro per ottenere delle concatenazioni di testo:

>>> eggs = "Meglio un uovo oggi..."
>>> bacon = "o una gallina domani?"
>>> eggs + bacon
'Meglio un uovo oggi...o una gallina domani?'

Come notate gli spazi non sono inclusi automaticamente, a quello dovrete pensare voi!

>>> eggs + " " + bacon
'Meglio un uovo oggi... o una gallina domani?'

Approfondiremo la nostra conoscenza del tipo di dato Stringa, introducendo metodi e sistemi di formattazione avanzata, in una lezione dedicata.