Un linguaggio di programmazione deve permettere di maneggiare non soltanto numeri, ma anche caratteri di testo. Nel linguaggio informatico italiano una sequenza di caratteri viene chiamata stringa: il termine deriva dall'assonanza con l'inglese string, (che significa corda, filo).
Apriamo IDLE e digitiamo (attenti a non dimenticare le virgolette prima e dopo):
>>> "Ciao"
'Ciao'
>>> "Io sono Luigi"
'Io sono Luigi'
>>> "e ho 15 anni!"
'e ho 15 anni!'
>>>
Vediamo che ogni volta che scriviamo del testo tra virgolette, IDLE capisce che si tratta di una stringa e ce lo segnala colorandola di verde. Se premiamo Invio ci risponde con gli stessi caratteri che abbiamo immesso (la risposta di IDLE è sempre colorata in blu).
Una stringa può contenere quindi lettere (maiuscole e minuscole), numeri, spazi e caratteri di punteggiatura.
Sono possibili anche i caratteri estesi, come le vocali accentate italiane, ma consiglio di non usarli (e
quindi di scrivere e'
anzichè è
) perchè potrebbero non essere riconosciuti eseguendo
Python in altre lingue.
Per definire una stringa in Python bisogna scrivere i caratteri che la compongono:
tra apici: | >>> 'Amo tanto la mia mamma' 'Amo tanto la mia mamma' |
oppure tra virgolette: | >>> "Voglio Tanto Bene A Mammina" 'Voglio Tanto Bene A Mammina' |
o tra tripli apici: | >>> '''Mamma ti voglio bene''' 'Mamma ti voglio bene' |
o tra triple virgolette: | >>> """Mammina ti amo""" 'Mammina ti amo' |
A questo punto sarete probabilmente confusi: perchè ci sono quattro modi diversi per fare la stessa cosa? La risposta è probabilmente questa: Python, essendo stato codificato abbastanza recentemente, ha cercato di "accontentare" chi già conosceva altri linguaggi (ad esempio, in C le stringhe si scrivono usando le virgolette mentre in Pascal usando gli apici) permettendogli di continuare ad usare la sintassi a cui è abituato. Questo è probabilmente una comodità per un programmatore esperto, ma confonde un principiante.
Va detto che le quattro alternative non sono perfettamente equivalenti: la prima e la seconda non permettono di andare a capo all'interno di una stringa, mentre usando la terza e la quarta possiamo scrivere stringhe su più righe (ne faremo uso più avanti). Comunque, per risolvere il problema, basta decidere di usare sempre una delle quattro forme possibili: dato che chi scrive è abituato a programmare in C e C++ (dove si usano le virgolette) nel seguito del tutorial useremo la sintassi con le "" (invece IDLE, come avete visto, quando ci risponde usa sempre gli apici).
Possiamo scrivere espressioni anche con le stringhe: infatti su di esse sono possibili due operazioni: l'addizione tra stringhe (che produce la loro concatenazione) e la moltiplicazione per un intero (che concatena più volte la stessa stringa). Proviamo a scrivere in IDLE:
>>> "mamma" + "mia"
'mammamia'
>>> "mamma " + "mia"
'mamma mia'
>>> "mamma" * 2
'mammamamma'
>>> "mamma " * 2
'mamma mamma '
>>> 3 * 5 * " zzz "
' zzz zzz zzz zzz zzz zzz zzz zzz zzz zzz zzz zzz zzz zzz zzz '
Notate che quando facciamo operazioni su stringhe che contengono parole sorge un problema per gli spazi: se concateniamo due stringhe esse vengono poste immediatamente una di seguito all'altra, quindi se vogliamo degli spazi tra le parole li dobbiamo aggiungere noi alla fine o all'inizio di una stringa (notate la differenza tra il primo ed il secondo esempio o tra il terzo ed il quarto).
'm m m m m '
'MammaMammaMammaMaMaMaMaMa'
'cane cane cane canecanecane'
SOLUZIONI
Un'altra importante caratteristica dei linguaggi di programmazione è la loro capacità di maneggiare espressioni logiche (cioè affermazioni del tipo "dieci è maggiore di cinque" che possono essere vere o false). In Matematica le leggi che riguardano questo tipo di proposizioni sono regolate dall'Algebra di Boole (dal matematico inglese George Boole) con la quale dovreste avere qualche familiarità (se avete bisogno di chiarimenti guardate qui). Proviamo a scrivere:
>>> 5 > 1
True
>>> 1 > 5
False
Un'espressione booleana è un'espressione che può avere solo due possibili risultati:
True
o False
. Attenzione: True
e False
sono due
costanti predefinite di Python e non delle stringhe, quindi vanno scritte senza virgolette
e sempre con l'iniziale maiuscola.
Come al solito se scriviamo una tale espressione in IDLE, questi ci risponde stampandone il valore. Nelle espressioni booleane possiamo usare (oltre agli usuali operatori), anche i seguenti (provate a digitare gli esempi):
Operatore | Significato | Esempio |
---|---|---|
< |
Minore | >>> 3 < 5 True |
<= |
Minore o uguale | >>> 10 <= 10 True |
> |
Maggiore | >>> 3 > 5 False |
>= |
Maggiore o uguale | >>> 10 >= 10 True |
== |
Uguale | >>> 3 == 5 False |
!= |
Diverso | >>> 3 != 5 True |
Alcune annotazioni importanti:
>= !=
) questi
vanno scritti senza spazi tra di essi==
(con due caratteri =
vicini).
Scrivendo 3 = 5
si ottiene un errore (vedremo il perchè nella prossima lezione)Si possono comparare anche le stringhe, in ordine alfabetico e tenendo presente che le maiuscole vengono sempre prima delle minuscole.
>>> "babbo" < "mamma"
True
>>> "papa'" < "mamma"
False
>>> "Papa'" < "Mamma"
False
>>> "Papa'" < "mamma"
True
>>> "babbo" < "Mamma"
False
Infine si possono creare espressioni booleane più complesse concatenando espressioni semplici tramite
gli operatori and or not
(con l'usuale significato dell'algebra booleana)
>>> not (1 > 5)
True
>>> (2 < 4) and (3 < 7)
True
>>> (1 > 5) or (1 > 6)
False
(ricordiamo che il not
rovescia il valore di verità di un'espressione, l'and
posto tra due espressioni vale True
solo se entrambe le espressioni sono True
e l'or
vale True
se almeno una delle espressioni è True
).
Python permette anche di concatenare due operatori con una sintassi simile a quella che si usa in matematica:
>>> 3 < 5 < 10
True
Questo tipo di espressione, (equivalente a 3 < and 5 < 10
) è molto
usato per verificare se un certo numero appartiene ad un intervallo di valori.
Nelle espressioni booleane vengono a volte usati anche valori numerici, effettuando delle conversioni
piuttosto complicate da numero a booleano e viceversa. In generale un numero è considerato True
se diverso da 0 e False
se uguale a 0, mentre True
e False
vengono
convertiti in 1 e 0 nelle espressioni numeriche. Finche non sarete più esperti vi conviene evitare di usare
espressioni di questo tipo.
>>> 5 and (3 > 0)
True
>>> 5 + True
6
Nella prima espressione abbiamo un and
tra due valori True
(e quindi il risultato è True
);
nella seconda il True
viene convertito in 1.
>>> 10 != 20
>>> 6 == 7
>>> 10 >= 10
>>> "ciccio" < "peppe"
>>> (4 != 5) or (10 > 0)
>>> not (2 == 5)
>>> (4 == 5) and (1 > 0)
>>> True and (1 < 20)
>>> 5 < 10 <= 8
>>> (True and False) or (3 == 3)
>>> (5 < 1) or (4 == 6) or (1 == 1)
Fine della lezione