============================================================

PROMEMORIA — OPERATORI DI APPARTENENZA E CONFRONTI DI TIPO

============================================================

Questo promemoria riassume:

- operatori di appartenenza: in / not in

- verifica dei tipi di dato con type()

- uso pratico nel contesto di un negozio di alimentari

============================================================

1. OPERATORI DI APPARTENENZA: in / not in

============================================================

Gli operatori di appartenenza permettono di verificare

se un valore è contenuto in un oggetto iterabile

(stringhe, liste, tuple, ecc.).

Restituiscono sempre un valore booleano: True o False

------------------------------------------------------------

ESEMPIO BASE CON STRINGHE

------------------------------------------------------------

item_name = "Strawberries"

Controllo se una sottostringa è presente

contains_straw = "Straw" in item_name contains_berry = "Berry" in item_name

print("Is 'Straw' in 'Strawberries'?", contains_straw) # True print("Is 'Berry' in 'Strawberries'?", contains_berry) # False (case-sensitive)

------------------------------------------------------------

ESEMPIO REALISTICO: DESCRIZIONE PRODOTTO

------------------------------------------------------------

product_description = "Fresh organic milk from local farms, pasteurized."

Verifica presenza parole chiave

is_organic = "organic" in product_description is_local = "local" in product_description is_raw = "raw" in product_description

print("Is the product organic?", is_organic) print("Is the product local?", is_local) print("Is the product raw?", is_raw)

============================================================

2. ATTENZIONE A MAIUSCOLE E MINUSCOLE

============================================================

Python è case-sensitive:

"Imported" è diverso da "imported"

description = "Fresh raw cheese imported from Italy"

contains_imported_upper = "Imported" in description contains_imported_lower = "imported" in description

print("Contains 'Imported'?", contains_imported_upper) # False print("Contains 'imported'?", contains_imported_lower) # True

============================================================

3. CONFRONTI DI TIPO CON type()

============================================================

La funzione type() restituisce il tipo di una variabile.

Spesso viene usata nei confronti per validare i dati.

------------------------------------------------------------

ESEMPIO BASE

------------------------------------------------------------

price = 3.49 count = 20 name = "Almond Milk"

price_is_float = type(price) == float count_is_int = type(count) == int name_is_string = type(name) == str

print("Is price a float?", price_is_float) print("Is count an integer?", count_is_int) print("Is name a string?", name_is_string)

------------------------------------------------------------

ESEMPIO CON ERRORE INTENZIONALE

------------------------------------------------------------

Prezzo ricevuto come stringa (errore comune)

product_price = "3.49"

correct_price_type = type(product_price) == float

print("Is product_price a float?", correct_price_type) # False

============================================================

4. COMPITO RIASSUNTO (COME NELLA SCHEDA)

============================================================

Dati di esempio

description = "Raw honey imported from local farms" price = 4.99 count = 15

Operatori di appartenenza

contains_raw = "raw" in description contains_Imported = "Imported" in description

Confronti di tipo

price_is_float = type(price) == float count_is_int = type(count) == int

Output richiesto

print("Contains 'raw':", contains_raw) print("Contains 'Imported':", contains_Imported) print("Is price a float?:", price_is_float) print("Is count an integer?:", count_is_int)

============================================================

5. CONCETTI CHIAVE DA RICORDARE

============================================================

✔ in / not in → controllano la presenza di un elemento

✔ funzionano su stringhe e strutture iterabili

✔ sono case-sensitive

✔ type() serve per validare i dati

✔ i confronti di tipo restituiscono booleani