edubun
Italiano

Prendere decisioni con if

Python controlla if e ogni elif dall'alto verso il basso ed esegue solo il primo ramo la cui condizione è True; gli altri vengono saltati.

Un prezzo del biglietto che dipende dall'età

Ecco un problema da provare prima di qualsiasi nuova sintassi. Un piccolo museo della scienza (inventato per questo esempio) non fa pagare i bambini sotto i 7 anni, fa pagare 3000 won dai 7 ai 18 anni e 5000 won a tutti gli altri. Data un'età, il programma deve stampare il prezzo. Scrivi prima la regola a parole, come un elenco di domande nell'ordine in cui le faresti alla biglietteria.

Probabilmente hai scritto qualcosa come: il visitatore ha meno di 7 anni? Se sì, gratis, e fermati. Se no, ha 18 anni o meno? Se sì, 3000 won, e fermati. Altrimenti, 5000 won. È già il programma. Python scrive «se», «altrimenti se» e «altrimenti» come if, elif ed else.

age = 12
if age < 7:
    price = 0
elif age <= 18:
    price = 3000
else:
    price = 5000
print(price)
Output
3000

Contano tre dettagli della sintassi. Ogni riga di condizione finisce con i due punti. Le righe che appartengono a un ramo sono rientrate, e il tutorial di Python raccomanda quattro spazi. Quando il rientro finisce, finisce il ramo, ed è per questo che print(price) viene eseguito qualunque sia l'età. E viene eseguito un solo ramo: per l'età 12, la prima condizione è False, la seconda è True, quindi price diventa 3000 e l'else non viene mai guardato.

I confronti danno True o False

OperatoreSignificatoEsempioRisultato
==uguale a5 == 5True
!=diverso da5 != 5False
<minore di3 < 7True
<=minore o uguale a7 <= 7True
>maggiore di3 > 7False
>=maggiore o uguale a18 >= 19False

Nota il doppio uguale. Un solo = assegna un valore, due == confrontano. Anche le stringhe si possono confrontare: "kimchi" == "Kimchi" è False, perché le maiuscole contano come caratteri diversi.

L'ordine delle righe elif cambia la risposta

Poiché Python si ferma alla prima condizione True, l'ordine dei rami conta. Assegnare un voto a un punteggio è il caso classico. Controlla prima 90 e oltre, poi 80, poi 70. Metti prima il controllo del 70 e un punteggio di 95 viene preso da quello e riceve una C, perché anche 95 >= 70 è True.

Una catena if/elif/else è una scala. Python scende finché una condizione è True, esegue quel solo ramo e salta oltre gli altri.
score = 95
if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
elif score >= 70:
    grade = "C"
else:
    grade = "D"
print(grade)
Output
A

and, or, not uniscono le condizioni

and è True solo quando entrambi i lati sono True. or è True quando almeno un lato lo è. not rovescia True e False. Una condizione come «tra 13 e 18» si può scrivere age >= 13 and age <= 18, oppure nella forma più breve di Python 13 <= age <= 18. Una condizione può anche stare dentro un altro ramo, cosa che si chiama annidamento. Il curricolo coreano di informatica delle medie nomina entrambe, operazioni logiche e strutture di controllo annidate, in uno dei suoi standard di programmazione.

age = 15
has_ticket = True
if 13 <= age <= 18 and has_ticket:
    print("Teen entry")
if not has_ticket or age < 7:
    print("See the desk")
else:
    print("Go in")
Output
Teen entry
Go in
ifEsegue le righe rientrate solo quando la condizione è True
elif«Altrimenti, se»: controllato solo quando tutto ciò che sta sopra era False
elseViene eseguito quando nessuna condizione sopra era True
==Confronta due valori; = assegna
and / or / notEntrambe vere / almeno una vera / il contrario
rientroQuattro spazi che segnano quali righe appartengono a un ramo
  1. Cosa stampa questo codice?
    x = 8
    if x > 5:
        print("big")
    else:
        print("small")
  2. Cosa stampa questo codice?
    age = 7
    if age < 7:
        print("free")
    elif age <= 18:
        print("3000")
    else:
        print("5000")
  3. Cosa stampa questo codice?
    score = 85
    if score >= 70:
        print("C")
    elif score >= 80:
        print("B")
  4. Cosa stampa questo codice?
    x = 3
    if x > 5:
        print("A")
    print("B")
    • A
      B
    • B
    • A
    • (nothing)
  5. Cosa stampa questo codice?
    print(5 == 5.0, "a" == "A")
  6. Cosa stampa questo codice?
    t = 30
    print(t > 25 and t < 28)
  7. Cosa stampa questo codice?
    rain = False
    print(not rain)
  8. Cosa stampa questo codice?
    n = 14
    if n % 2 == 0:
        if n > 10:
            print("big even")
        else:
            print("small even")
    else:
        print("odd")
  9. Quale riga controlla correttamente se x vale 10?
    • if x = 10:
    • if x == 10:
    • if x == 10
    • if (x = 10)
  10. Metti le righe in ordine perché il programma stampi "Even".
    Output
    Even
Errori comuni
  • «if score = 90: controlla se score vale 90.» Un solo = è un'assegnazione. Python si ferma con SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='? Scrivi if score == 90:.
  • «if answer == "yes" or "y": cattura entrambe le risposte.» Python lo legge come (answer == "yes") or ("y"), e una stringa non vuota come "y" conta come vera, quindi la condizione è sempre vera. Scrivi answer == "yes" or answer == "y".
  • «Il rientro serve solo all'aspetto.» In Python decide quali righe appartengono al ramo. Dimenticarlo ferma il programma con IndentationError: expected an indented block after 'if' statement on line 2.
Nota per l'insegnantePartire dalla biglietteria funziona perché chi impara conosce già la decisione; l'unica cosa nuova è la scrittura. Chiedi di dire la regola a voce alta, in ordine, prima di scrivere. Il programma di valutazione con l'ordine sbagliato vale la pena di eseguirlo di proposito: stampa C per 85 senza alcun errore, un primo assaggio di errore logico. Quando controlli il lavoro, prova i valori limite (6, 7, 18, 19 per il problema del biglietto), perché gli errori di uno tra < e <= si nascondono lì. Il curricolo coreano di informatica delle medie ha uno standard sulle operazioni logiche e sulle strutture di controllo annidate.
Punti chiave
  • if / elif / else: viene eseguito solo il primo ramo True.
  • Le righe di condizione finiscono con :, e il ramo è rientrato di quattro spazi.
  • == confronta; = assegna.
  • Metti per prima la condizione più restrittiva in una catena elif.
  • and, or e not combinano le condizioni.
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