Parte I — Le basi
Capitolo 4 — I testi
Un testo (gli informatici lo chiamano stringa) è una sequenza di caratteri: una parola, una frase, un intero paragrafo. In Leo i testi vanno tra virgolette doppie e sono tra i tipi che userai di più, perché quasi ogni programma, prima o poi, deve dire o leggere qualcosa.
💡 L'idea — Una collana di perline
Immagina un testo come una collana di perline: ogni perlina è un carattere, infilato in un ordine preciso. La parola «Leo» è tre perline —
L,e,o— in quella sequenza e non in un'altra. Da questa immagine seguono due cose naturali: puoi contare le perline (la lunghezza del testo) e puoi sfilarne un tratto (una «fetta» di caratteri), proprio come faremo più avanti.
L'interpolazione: testi che si riempiono da soli
L'abbiamo già incontrata, ma ora le diamo il posto che merita. Dentro un testo tra virgolette, tutto ciò che metti tra graffe {…} viene calcolato, e il risultato prende quel posto. Questo si chiama interpolazione:
variabile nome = "Beatrice"
scrivi "Ciao, {nome}! Il tuo nome ha {lunghezza(nome)} lettere."
scrivi "Due più tre fa {2 + 3}."Ciao, Beatrice! Il tuo nome ha 8 lettere.
Due più tre fa 5.Tra le graffe puoi mettere qualunque espressione: una variabile ({nome}), una chiamata di funzione ({lunghezza(nome)}), un calcolo ({2 + 3}), persino un altro testo. È il modo più leggibile per costruire frasi a partire dai dati, e lo preferiremo quasi sempre alla concatenazione con il +.
A proposito: i testi si possono anche unire con il + ("ab" + "cd" dà "abcd") e ripetere con il * ("ab" * 3 dà "ababab"). Ma attenzione alla regola d'oro di Leo: i tipi non si mescolano di nascosto. "Ne mancano " + 3 è un errore, perché stai sommando un testo e un numero; o usi l'interpolazione — "Ne mancano {3}" — oppure converti a mano: "Ne mancano " + testo(3).
I caratteri speciali
Alcuni caratteri non si possono scrivere direttamente dentro un testo, perché servirebbero a chiudere il testo stesso (le virgolette) o perché non sono stampabili (l'a-capo). Per questi c'è la barra rovesciata \, seguita da una lettera che dice cosa vuoi:
scrivi "Prima riga\nSeconda riga"
scrivi "Colonna1\tColonna2"
scrivi "Lei disse \"ciao\" e sorrise"
scrivi "Un backslash: \\"
scrivi "Graffe vere: \{ciao\}"Prima riga
Seconda riga
Colonna1 Colonna2
Lei disse "ciao" e sorrise
Un backslash: \
Graffe vere: {ciao}In breve: \n è l'a-capo, \t è la tabulazione, \" è una virgoletta che non chiude il testo, \\ è una barra rovesciata vera, e \{ e \} sono graffe letterali (utili quando vuoi davvero scrivere una graffa senza interpolare).
Testi su più righe
Quando un testo è lungo — una lettera, un messaggio, un piccolo documento — infilare \n dappertutto è scomodo. Per questo ci sono i testi tra tre virgolette """, che possono andare a capo liberamente e capiscono comunque l'interpolazione. C'è anche un'eleganza nascosta: se le virgolette di chiusura stanno da sole sulla loro riga, il loro rientro viene tolto da tutte le righe, così il testo può rientrare insieme al codice senza portarsi dietro gli spazi.
variabile nome = "Beatrice"
variabile lettera = """
Caro {nome},
grazie della visita.
"""
scrivi(lettera)Caro Beatrice,
grazie della visita.Nota come il rientro di quattro spazi (quello del codice) è sparito, mentre i due spazi in più davanti a «grazie» sono rimasti: Leo toglie solo il rientro comune, segnato dalle virgolette di chiusura.
Entrare dentro un testo
Un testo è fatto di caratteri in fila, numerati a partire da zero. Con le parentesi quadre prendi il carattere a una certa posizione; un indice negativo conta dalla fine (-1 è l'ultimo):
variabile nome = "Beatrice"
scrivi(nome[0])
scrivi(nome[-1])B
e🦁 Curiosità — Ogni emoji ha un numero
Dietro ogni carattere che vedi c'è un numero, stabilito da uno standard internazionale chiamato Unicode. Non solo le lettere dell'alfabeto: anche gli ideogrammi cinesi, l'alfabeto greco, i simboli matematici e persino le emoji hanno ciascuno il proprio codice. I caratteri definiti da Unicode sono oltre centomila, e crescono a ogni nuova versione. Quando Leo conta le lettere di una parola, in fondo conta questi caratteri, qualunque sia la lingua.
Una cosa importante, che all'inizio sorprende: in Leo i testi non si modificano. Non puoi cambiare una lettera «sul posto». Tutti i metodi che sembrano cambiare un testo in realtà ne restituiscono uno nuovo, lasciando intatto l'originale. È una scelta che rende i programmi più prevedibili.
I metodi dei testi
Un metodo è una funzione che appartiene a un valore e si chiama con il punto. I testi ne hanno parecchi; ecco i più usati:
variabile nome = "Beatrice"
scrivi(nome.maiuscolo())
scrivi(nome.minuscolo())
scrivi(" spazi ".pulisci())
scrivi("ciao mondo".dividi())
scrivi("-".unisci(["2026", "09", "25"]))
scrivi("banana".sostituisci("a", "o"))
scrivi("Beatrice".contiene("tri"))BEATRICE
beatrice
spazi
["ciao", "mondo"]
2026-09-25
bonono
veroLeggiamoli con calma. .maiuscolo() e .minuscolo() cambiano il caso delle lettere. .pulisci() toglie gli spazi all'inizio e alla fine (utilissimo con quello che scrive un utente). .dividi() spezza un testo in una lista di pezzi: senza argomenti divide sugli spazi, ma puoi dirgli un separatore. .unisci(lista) fa il contrario: prende una lista di testi e li incolla mettendo in mezzo il testo su cui lo chiami (qui "-"). .sostituisci(vecchio, nuovo) cambia tutte le occorrenze. .contiene(pezzo) dice se un pezzo è dentro.
Ci sono anche .inizia_con(...), .finisce_con(...) e altri; li trovi nel riferimento in appendice. Ricorda: nessuno di questi modifica il testo di partenza, tutti ne restituiscono uno nuovo.
Prova tu
- Chiedi all'utente nome e cognome in due domande separate, poi stampa le iniziali (per esempio
B.R.) usando l'indicizzazione[0]e.maiuscolo(). - Prendi una frase a tua scelta, dividila in parole con
.dividi()e stampa quante parole contiene (suggerimento:lunghezzafunziona anche sulle liste). - Scrivi una «lettera tipo» su più righe con
""", lasciando dei buchi come{nome}e{data}, poi riempila con variabili diverse e osserva come cambia.