edubun
Italiano

Valori e variabili

In algebra, score = score + 5 non ha soluzione. In Python è una riga di tutti i giorni: se score valeva 10, diventa 15.

Il segno = non significa «è uguale a»

Mostra a uno studente di matematica la riga score = score + 5 e dirà che è falsa: nessun numero è uguale a se stesso più cinque. Ha ragione per l'algebra, ed è proprio per questo che la riga confonde la prima volta che la si vede in un programma. In Python, = non afferma che due cose sono uguali. È un'istruzione con una direzione. Calcola prima il lato destro, poi attacca il nome a sinistra al risultato.

score = 10
score = score + 5
print(score)
Output
15

Leggila come fa Python. Riga 1: il lato destro è 10, quindi il nome score ora si riferisce a 10. Riga 2: il lato destro è score + 5, cioè 10 + 5, cioè 15, quindi score ora si riferisce a 15. Il vecchio 10 non c'è più. La riga 3 stampa ciò a cui score si riferisce in quel momento. Un nome che si riferisce a un valore in questo modo si chiama variabile, e la riga che gli dà un valore è un'assegnazione.

Una variabile funziona come un'etichetta con un nome. Dopo score = score + 5, l'etichetta si sposta sul nuovo valore 15; il vecchio valore 10 resta indietro.

Una tabella di traccia segue ogni variabile riga per riga

Quando più variabili cambiano, tieni una tabella di traccia: una riga per ogni riga di codice, una colonna per ogni variabile, e scrivi il valore che ogni variabile ha dopo l'esecuzione di quella riga. Richiede tempo, ma funziona. La maggior parte delle domande «perché stampa questo?» si risolve con una tabella di traccia in meno di un minuto.

score = 10
bonus = score * 2
score = 0
print(score, bonus)
Output
0 20
Rigascorebonus
score = 1010(ancora nessuno)
bonus = score * 21020
score = 0020
print(score, bonus)020

Guarda le ultime due righe. Cambiare score in 0 non ha cambiato bonus. Quando la riga 2 è stata eseguita, Python ha calcolato 10 * 2 = 20 e ha dato a bonus quel numero. bonus contiene il risultato, non la ricetta, quindi non conserva il procedimento che ha prodotto il 20.

Ogni valore ha un tipo

I valori sono di vari generi, chiamati tipi. I numeri interi come 42 sono int. I numeri con il punto decimale, come 3.5, sono float. Il testo tra virgolette è str. True e False sono bool. La funzione incorporata type ti dice quale hai. Il tipo conta perché decide che cosa fa un'operazione: 2 + 3 somma, mentre "2" + "3" unisce due stringhe in "23".

print(type(42))
print(type(3.5))
print(type("42"))
print(type(True))
print(2 + 3, "2" + "3")
Output
<class 'int'>
<class 'float'>
<class 'str'>
<class 'bool'>
5 23

Regole per i nomi

Il nome di una variabile può usare lettere, cifre e il trattino basso _, ma non può iniziare con una cifra e non può contenere spazi. Le maiuscole contano come lettere diverse, quindi Score e score sono due variabili separate. Alcune parole, come if, for e True, appartengono al linguaggio e non si possono usare come nomi. I programmatori Python di solito scrivono i nomi in minuscolo con trattini bassi tra le parole, come lunch_price, e scelgono nomi che dicono che cosa significa il valore. x va bene per una prova veloce, e seats_left è meglio in un programma che leggerà qualcun altro.

a = "left"
b = "right"
a, b = b, a
print(a, b)
Output
right left

L'ultimo esempio scambia due valori in una riga. Python calcola tutto il lato destro, b, a, per primo, e solo poi dà i due risultati ad a e b. Molti altri linguaggi hanno bisogno di una terza variabile per fare lo stesso lavoro.

variabileUn nome che si riferisce a un valore
assegnazionenome = valore: calcola il lato destro, poi attacca il nome
intNumeri interi: 7, -3, 2026
floatNumeri con il punto decimale: 3.5, 0.1
strTesto tra virgolette
boolTrue o False
tabella di tracciaUna tabella del valore di ogni variabile dopo ogni riga
  1. Cosa stampa questo codice?
    x = 4
    x = x + 3
    print(x)
  2. Cosa stampa questo codice?
    a = 3
    b = a
    a = 7
    print(b)
  3. Cosa stampa questo codice?
    price = 1500
    count = 3
    total = price * count
    print(total)
  4. Cosa stampa questo codice?
    n = 2
    n = n * n
    n = n * n
    print(n)
    • 4
    • 8
    • 16
    • 2
  5. Cosa stampa questo codice?
    print(type(7.0))
  6. Cosa stampa questo codice?
    print("7" + "7")
  7. Quale di questi è un nome di variabile valido?
    • 2nd_place
    • seats left
    • seats_left
    • for
  8. Cosa stampa questo codice?
    a = "left"
    b = "right"
    a, b = b, a
    print(b)
  9. Cosa stampa questo codice?
    Score = 5
    score = 9
    print(Score)
    • 5
    • 9
    • 14
    • An error
  10. Dopo x = 10 e poi x + 1 da solo su una riga, quanto vale x?
    • 10
    • 11
    • x + 1
    • Un errore
Errori comuni
  • «5 = x e x = 5 significano la stessa cosa.» Il nome deve stare a sinistra. 5 = x si ferma con SyntaxError: cannot assign to literal here. Maybe you meant '==' instead of '='?
  • «bonus = score * 2 lega bonus a score per sempre.» bonus riceve il numero che il calcolo ha dato in quel momento. I cambiamenti successivi di score non lo toccano, come mostra la tabella di traccia.
  • «Scrivere x + 1 aggiunge uno a x.» Un'espressione da sola non cambia niente. Ti serve x = x + 1, oppure la forma breve x += 1.
Nota per l'insegnanteIl segno = è la principale fonte di confusione ereditata dalla matematica. Un'abitudine utile è leggere = ad alta voce come «riceve» o «diventa» («score riceve score più cinque») e mai come «uguale». Le tabelle di traccia meritano tempo vero in classe: dai un programma di cinque righe, chiedi la tabella prima che qualcuno lo esegua, poi eseguilo e confronta. Lo scambio a, b = b, a è una buona prova per sapere se chi impara ha capito che tutto il lato destro viene calcolato per primo. Tieni type() sotto gli occhi fin dall'inizio, perché la sorpresa di "7" + "7" ritorna nell'unità sull'input.
Punti chiave
  • = significa «calcola il lato destro, poi dagli questo nome».
  • Una tabella di traccia registra ogni variabile dopo ogni riga.
  • Tipi: int, float, str, bool. type() dice quale.
  • Nomi: lettere, cifre, _; mai una cifra all'inizio; le maiuscole contano.
Fonti di questo corso (6)
  • Python Software Foundation, The Python Tutorial for Python 3.12 (docs.python.org/3.12/tutorial: 2 Using the Python Interpreter, 3 An Informal Introduction to Python (numbers, text, lists), 4 More Control Flow Tools (if, for, range, break and continue, defining functions, default argument values, 4.10 coding style: 4-space indentation), 5 Data Structures (list methods, 5.5 dictionaries, insertion order), 8 Errors and Exceptions (syntax errors, exceptions, reading the traceback, handling exceptions), 15 Floating-Point Arithmetic (0.1 + 0.2))
  • Built-in Functions (docs.python.org/3.12/library/functions.html: print, input, len, int, float, str, type, round (round half to even: round(0.5) and round(-0.5) are 0, round(1.5) is 2), range, sum, min, max, sorted)
  • Built-in Types (str methods upper, lower, replace, strip; dict.get; list.append, pop, remove, sort returning None)
  • General Python FAQ (docs.python.org/3.12/faq/general.html: Guido van Rossum began Python in the 1989 Christmas holidays, posted it to USENET in February 1991, named it after Monty Python's Flying Circus)
  • Curriculum for the Korean pages: 교육부 고시 제2022-33호 [별책 10] 정보과 교육과정 (PDF read 2026-10-19: 중학교 정보 [9정03-05] 리스트 등 데이터를 순차적으로 저장하는 구조, [9정03-06] 논리 연산과 중첩 제어 구조, [9정03-07] 함수 활용과 디버거로 오류 수정, [9정03-08] 실생활 문제를 프로그래밍으로 해결, 적용 시 고려 사항 「학생의 수준을 고려하여 적합한 프로그래밍 언어를 선정」; 고등학교 정보 [12정03-04] 자료형, [12정03-05] 표준입출력, [12정03-07] 제어 구조)
  • Bug story only: Smithsonian National Museum of American History, Log Book With Computer Bug, 1947, Harvard Mark II, "first actual case of bug being found", probably not Hopper's log book (americanhistory.si.edu/collections/object/nmah_334663, read 2026-10-19)

Consultato il: 2026-10-19