Corso Python / Confronti e operatori logici: and, or, not e None
Gli operatori di confronto verificano relazioni tra valori; gli operatori logici combinano condizioni. In Python and e or possono restituire un operando anziché un booleano: separa quindi il controllo di una condizione dalla scelta di un valore predefinito.
Distinguere uguaglianza, assegnazione e identità
== confronta valori, = assegna un valore a un nome e != verifica una differenza. I simboli <, <=, > e >= esprimono confronti d’ordine. Puoi concatenarli: 0 <= amount <= 10000 include entrambi i limiti; 0 < amount <= 10000 esclude invece zero.
Non presumere che una stringa numerica e un numero possano essere confrontati per grandezza: 8000 < "10000" genera TypeError. Controlla e converti i dati al confine di ingresso, come nell’esempio di lettura dell’importo da terminale.
None rappresenta l’assenza di un valore e si controlla con is None. L’operatore is verifica se due riferimenti indicano lo stesso oggetto, mentre == confronta i valori. Due liste create separatamente possono avere contenuto uguale senza essere la stessa lista: per il contenuto usa ==.
La specifica dei confronti Python definisce uguaglianza, identità e concatenazione. Non basare un confronto numerico sull’identità osservata casualmente per alcuni interi.
Eseguire confronti e scelte di valori
Salva questo programma in UTF-8 come conditions.py, in una cartella di esercitazione. Esegui python conditions.py con l’interprete del progetto selezionato. Su macOS o Ubuntu fuori dall’ambiente virtuale usa python3 se è il comando dell’interprete scelto. Non occorrono librerie esterne.
amount = 8000
category = "food"
print(0 < amount <= 10000)
print(amount > 5000 and category == "food")
print(not category)
print("" or "unknown")
print(0 or 100)
print([] == [], [] is [])
Il risultato atteso è:
True
True
False
unknown
100
True False
8000 rientra nell’intervallo aperto a sinistra e chiuso a destra. Anche la seconda condizione è vera: l’importo supera 5000 e la categoria è food. not category è falso perché la stringa non è vuota. Le due righe con or restituiscono valori concreti, unknown e 100; l’ultima confronta contenuto e identità di due liste vuote distinte.
Capire verità logica e valutazione a corto circuito
Zero, None, stringhe vuote e contenitori vuoti sono falsi in un contesto condizionale. Una stringa non vuota come "False" è invece vera: bool("False") restituisce True. Per interpretare un’opzione testuale devi stabilire quali parole ammettere e gestire quelle sconosciute, non limitarti a chiamare bool().
Con x and y, se x è falso viene restituito x e y non viene valutato; altrimenti viene valutato e restituito y. Con x or y, se x è vero viene restituito x senza valutare y; altrimenti viene restituito il risultato di y. not restituisce invece un booleano. Le regole ufficiali degli operatori booleani spiegano questo comportamento.
La valutazione a corto circuito controlla anche se una funzione viene eseguita. In False and check() e True or check(), check non viene chiamata. Eseguendo print(False and print("called")) ottieni solo False, senza called. Non mettere controlli o salvataggi obbligatori nell’operando destro di un’espressione che può saltarli.
Conservare zero e valori vuoti quando sono validi
amount or 100 restituisce 100 anche quando amount è zero. Se solo l’assenza indicata da None deve attivare il valore predefinito, scrivi 100 if amount is None else amount. In questo modo zero rimane zero e un valore positivo resta invariato.
- Nel programma cambia amount da 8000 a 10000: il primo confronto rimane vero. Con 10001 diventa falso, mostrando il limite superiore incluso.
- Ripristina l’importo e imposta category a stringa vuota. La seconda condizione diventa falsa e
not categorydiventa vero. - Prova amount uguale a zero e confronta
amount or 100con il controllo esplicito di None. Decidi quale risultato corrisponde al significato dei dati. - Ripristina importo e categoria originali ed esegui nuovamente il file, verificando tutte le righe.
Un’espressione corretta per un importo positivo può comportarsi diversamente con zero, una stringa vuota o un campo assente. Definisci quali casi sono validi prima di scegliere una scorciatoia logica.




