Variabili e assegnazioni
Ultimo aggiornamento il 2025-11-06 | Modifica questa pagina
Panoramica
Domande
- Come si possono memorizzare i dati nei programmi?
Obiettivi
- Scrivere programmi che assegnano valori scalari alle variabili ed eseguono calcoli con tali valori.
- Tracciare correttamente i cambiamenti di valore nei programmi che utilizzano l’assegnazione scalare.
Usare le variabili per memorizzare i valori.
Variabili sono nomi di valori.
-
Nomi di variabili
- Possono solo contenere lettere, cifre e il trattino
basso
_(tipicamente usato per separare le parole in nomi di variabili lunghi) - Non possono iniziare con una cifra
- Sono sensibili alle maiuscole (age, Age e AGE sono tre variabili diverse)
- Possono solo contenere lettere, cifre e il trattino
basso
Anche il nome deve essere significativo, in modo che l’utente o un altro programmatore sappia di cosa si tratta
I nomi delle variabili che iniziano con trattini bassi, come
__alistairs_real_age, hanno un significato speciale, quindi non lo faremo finché non avremo capito la convenzione.In Python il simbolo
=assegna il valore a destra al nome a sinistra.La variabile viene creata quando le viene assegnato un valore.
-
Qui Python assegna un’età alla variabile
agee un nome tra virgolette alla variabilefirst_name.
Usare print per visualizzare i valori.
- Python ha una funzione integrata chiamata
printche stampa le cose come testo. - Chiamate la funzione (cioè dite a Python di eseguirla) usando il suo nome.
- Fornire i valori alla funzione (cioè le cose da stampare) tra parentesi.
- Per aggiungere una stringa alla stampa, avvolgerla in apici singoli o doppi.
- I valori passati alla funzione sono chiamati argomenti
OUTPUT
Ahmed is 42 years old
-
printinserisce automaticamente un singolo spazio tra gli elementi per separarli. - e si avvolge su una nuova riga alla fine.
Le variabili devono essere create prima di essere utilizzate.
- Se una variabile non esiste ancora o se il nome è stato scritto male, Python segnala un errore. (A differenza di alcuni linguaggi, che “indovinano” un valore predefinito)
ERRORE
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-1-c1fbb4e96102> in <module>()
----> 1 print(last_name)
NameError: name 'last_name' is not defined
- L’ultima riga di un messaggio di errore è di solito la più informativa.
- I messaggi di errore saranno esaminati in dettaglio [più avanti] (17-scope.md#reading-error-messages).
Le variabili persistono tra una cella e l’altra
Siate consapevoli che in un quaderno Jupyter è importante l’ordine di esecuzione delle celle, non l’ordine in cui appaiono. Python ricorda tutto il codice eseguito in precedenza, comprese le variabili definite, indipendentemente dall’ordine nel notebook. Pertanto, se si definiscono variabili più in basso nel notebook e poi si (ri)eseguono celle più in alto, quelle definite più in basso saranno ancora presenti. Ad esempio, si creino due celle con il seguente contenuto, in quest’ordine:
Se lo si esegue in ordine, la prima cella darà un errore. Tuttavia,
se si esegue la prima cella dopo la seconda cella, verrà
stampato 1. Per evitare confusione, può essere utile usare
l’opzione Kernel -> Restart & Run All
che cancella l’interprete ed esegue tutto da zero, dall’inizio alla
fine.
Le variabili possono essere usate nei calcoli.
- Possiamo usare le variabili nei calcoli come se fossero valori.
- Ricordate che abbiamo assegnato il valore
42aagequalche riga fa.
- Ricordate che abbiamo assegnato il valore
OUTPUT
Age in three years: 45
Usare un indice per ottenere un singolo carattere da una stringa.
- I caratteri (singole lettere, numeri e così via) in una stringa sono
ordinati. Ad esempio, la stringa
'AB'non è uguale a'BA'. A causa di questo ordinamento, possiamo trattare la stringa come un elenco di caratteri. - A ogni posizione nella stringa (prima, seconda, ecc.) viene assegnato un numero. Questo numero è chiamato indice o talvolta pedice.
- Gli indici sono numerati a partire da 0.
- utilizzare l’indice della posizione tra parentesi quadre per ottenere il carattere in quella posizione.
OUTPUT
h
Usare una slice per ottenere una sottostringa.
- Una parte di una stringa è chiamata sottostringa. Una sottostringa può essere breve come un singolo carattere.
- Un elemento di un elenco è chiamato elemento. Ogni volta che trattiamo una stringa come se fosse un elenco, gli elementi della stringa sono i suoi singoli caratteri.
- Una slice è una parte di una stringa (o, più in generale, una parte di qualsiasi cosa simile a un elenco).
- Prendiamo una slice con la notazione
[start:stop], dovestartè l’indice intero del primo elemento che vogliamo estopè l’indice intero dell’elemento appena successivo all’ultimo elemento che vogliamo. - La differenza tra
stopestartè la lunghezza della slice. - L’esecuzione di una slice non modifica il contenuto della stringa originale. Al contrario, l’acquisizione di una fetta restituisce una copia di una parte della stringa originale.
OUTPUT
sod
Usare la funzione integrata len per trovare la
lunghezza di una stringa.
OUTPUT
6
- Le funzioni annidate vengono valutate dall’interno verso l’esterno, come in matematica.
Python è sensibile alle maiuscole e alle minuscole.
- Python pensa che le lettere maiuscole e minuscole siano diverse,
quindi
Nameenamesono variabili diverse. - Esistono convenzioni per l’uso di lettere maiuscole all’inizio dei nomi delle variabili, quindi per ora useremo lettere minuscole.
Utilizzare nomi di variabili significativi.
- A Python non interessa come si chiamano le variabili, purché rispettino le regole (caratteri alfanumerici e trattino basso).
- Utilizzare nomi di variabili significativi per aiutare gli altri a capire cosa fa il programma.
- L’“altra persona” più importante è il vostro io futuro.
OUTPUT
# Command # Value of x # Value of y # Value of swap #
x = 1.0 # 1.0 # not defined # not defined #
y = 3.0 # 1.0 # 3.0 # not defined #
swap = x # 1.0 # 3.0 # 1.0 #
x = y # 3.0 # 3.0 # 1.0 #
y = swap # 3.0 # 1.0 # 1.0 #
Queste tre righe scambiano i valori in x e
y usando la variabile swap come memoria
temporanea. Si tratta di un idioma di programmazione piuttosto
comune.
OUTPUT
left
Alla variabile initial viene assegnato il valore
'left'. Nella seconda riga, anche la variabile
position riceve il valore di stringa 'left'.
Nella terza riga, alla variabile initial viene assegnato il
valore 'right', ma la variabile position
mantiene il suo valore di stringa 'left'.
Sfida
Se si assegna a = 123, cosa succede se si cerca di
ottenere la seconda cifra di a tramite
a[1]?
I numeri non sono stringhe o sequenze e Python solleva un errore se
si cerca di eseguire un’operazione di indice su un numero. Nella
[prossima lezione sui tipi e sulla conversione dei tipi]
(03-types-conversion.md) impareremo di più sui tipi e su come
convertirli Se si desidera l’ennesima cifra di un numero, è possibile
convertirla in una stringa utilizzando la funzione incorporata
str e quindi eseguire un’operazione di indice su tale
stringa.
ERRORE
TypeError: 'int' object is not subscriptable
OUTPUT
2
Scelta di un nome
Qual è il nome migliore per una variabile, m,
min o minutes? Suggerimento: pensate a quale
codice preferireste ereditare da qualcuno che sta per lasciare il
laboratorio:
ts = m * 60 + stot_sec = min * 60 + sectotal_seconds = minutes * 60 + seconds
minutes è la scelta migliore perché min
potrebbe significare qualcosa come “minimo” (e in realtà è una funzione
integrata in Python che tratteremo più avanti).
OUTPUT
atom_name[1:3] is: ar
Concetti di affettatura
Data la seguente stringa:
Cosa restituiscono queste espressioni?
species_name[2:8]-
species_name[11:](senza un valore dopo i due punti) -
species_name[:4](senza un valore prima dei due punti) -
species_name[:](solo i due punti) species_name[11:-3]species_name[-5:-3]- Cosa succede quando si sceglie un valore
stopche non rientra nell’intervallo? (cioè, provate conspecies_name[0:20]ospecies_name[:103])
-
species_name[2:8]restituisce la sottostringa'acia b' -
species_name[11:]restituisce la sottostringa'folia', dalla posizione 11 fino alla fine -
species_name[:4]restituisce la sottostringa'Acac', dall’inizio fino alla posizione 4 esclusa -
species_name[:]restituisce l’intera stringa'Acacia buxifolia' -
species_name[11:-3]restituisce la sottostringa'fo', dall’undicesima posizione alla terzultima -
species_name[-5:-3]restituisce anche la sottostringa'fo', dalla quintultima posizione alla terzultima - Se una parte della slice è fuori dall’intervallo, l’operazione non
fallisce.
species_name[0:20]dà lo stesso risultato dispecies_name[0:]especies_name[:103]dà lo stesso risultato dispecies_name[:]
- Utilizzare le variabili per memorizzare i valori.
- Usare
printper visualizzare i valori. - Le variabili persistono tra le celle.
- Le variabili devono essere create prima di essere utilizzate.
- Le variabili possono essere utilizzate nei calcoli.
- Usare un indice per ottenere un singolo carattere da una stringa.
- Usare una slice per ottenere una sottostringa.
- Usare la funzione integrata
lenper trovare la lunghezza di una stringa. - Python è sensibile alle maiuscole e alle minuscole.
- Utilizzare nomi di variabili significativi.