Python: numeri, stringhe e booleani per gestire uno stato di prenotazione

by theArchitect
SHARE
Python: numeri, stringhe e booleani per gestire uno stato di prenotazione
© Guida-HTML5.it

Introduzione

I tipi di dati di base in Python — numeri, stringhe e booleani — sono spesso presentati con esempi molto semplici, come calcoli o saluti. In questo tutorial li useremo in un contesto più realistico: la gestione di una prenotazione di un posto in una piccola sala eventi.

È un caso utile perché mette in gioco tre aspetti fondamentali:

  • numeri per rappresentare capienza, posti occupati e durata;
  • stringhe per memorizzare nome del cliente, tipo di evento e messaggi di conferma;
  • booleani per indicare se una prenotazione è confermata, se ci sono posti disponibili o se serve un deposito.

L’obiettivo non è costruire un sistema completo, ma capire come combinare questi tipi di dati in modo pulito e pratico. Vedrai anche come fare conversioni tra tipi, formattare messaggi leggibili e scrivere codice chiaro, facilmente estendibile.

Codice completo

# Gestione semplice di una prenotazione per una sala eventi

# Dati numerici
capienza_totale = 50
posti_prenotati = 42
durata_evento_ore = 3

# Dati testuali
nome_cliente = "Luca Bianchi"
tipo_evento = "Workshop Python"

# Dati booleani
prenotazione_confermata = True
richiede_deposito = False

# Calcoli
posti_disponibili = capienza_totale - posti_prenotati
evento_lungo = durata_evento_ore >= 3

# Conversioni utili
posti_disponibili_testo = str(posti_disponibili)
durata_testo = str(durata_evento_ore)

# Messaggio base
messaggio = (
    f"Prenotazione per {nome_cliente}n"
    f"Evento: {tipo_evento}n"
    f"Durata: {durata_testo} oren"
    f"Posti disponibili: {posti_disponibili_testo}"
)

# Verifiche logiche
if prenotazione_confermata and posti_disponibili > 0:
    stato = "confermata"
else:
    stato = "non confermata"

if richiede_deposito or evento_lungo:
    nota = "È richiesto un deposito o una verifica aggiuntiva."
else:
    nota = "Nessun deposito richiesto."

# Controllo finale
print(messaggio)
print(f"Stato prenotazione: {stato}")
print(f"Nota: {nota}")

# Esempio di aggiornamento dei dati
posti_prenotati += 2
posti_disponibili = capienza_totale - posti_prenotati

print("nDopo l´aggiornamento:")
print(f"Posti prenotati: {posti_prenotati}")
print(f"Posti disponibili: {posti_disponibili}")

Spiegazione

Il codice parte da tre gruppi di variabili, ognuno associato a un tipo di dato fondamentale.

1. Numeri: interi e operazioni aritmetiche

Le variabili capienza_totale, posti_prenotati e durata_evento_ore sono numeri interi. In Python, gli interi sono perfetti per contare elementi discreti: posti, utenti, prodotti, minuti, giorni.

La riga:

posti_disponibili = capienza_totale - posti_prenotati

mostra una sottrazione classica. Questo valore è utile per capire se è possibile accettare una nuova prenotazione.

Inoltre, la riga:

evento_lungo = durata_evento_ore >= 3

usa un confronto numerico che produce un booleano. È un passaggio molto importante: spesso i numeri non servono solo per calcolare, ma anche per decidere.

2. Stringhe: testo e formattazione

Le stringhe rappresentano dati testuali come il nome del cliente e il tipo di evento. In Python sono fondamentali per costruire messaggi, etichette, log e output leggibili.

La variabile messaggio usa una f-string:

messaggio = (
    f"Prenotazione per {nome_cliente}n"
    f"Evento: {tipo_evento}n"
    f"Durata: {durata_testo} oren"
    f"Posti disponibili: {posti_disponibili_testo}"
)

Le f-string sono una delle soluzioni più comode in Python per inserire variabili dentro una stringa. Sono leggibili, veloci e riducono il rischio di errori rispetto a concatenazioni manuali con +.

Nel codice abbiamo anche convertito numeri in stringhe con str(). Questo è utile quando vuoi unificare dati numerici e testuali in un messaggio.

3. Booleani: decisioni e condizioni

I booleani possono assumere solo due valori: True o False. Sono il cuore della logica di controllo.

Nel nostro esempio:

prenotazione_confermata = True
richiede_deposito = False

Queste variabili descrivono lo stato della prenotazione. Poi vengono usate in condizioni come:

if prenotazione_confermata and posti_disponibili > 0:

Qui entrano in gioco due verifiche contemporanee:

  • la prenotazione deve essere confermata;
  • devono esserci posti disponibili.

Se entrambe sono vere, lo stato diventa confermata. Altrimenti, la prenotazione non può essere considerata valida.

Un altro esempio è:

if richiede_deposito or evento_lungo:

L’operatore or significa che basta una sola condizione vera per entrare nel ramo. È utile quando una regola si applica in più casi, ad esempio per eventi lunghi o prenotazioni particolari.

4. Aggiornamento dello stato

La parte finale del codice mostra un aspetto molto comune nei programmi reali: i dati cambiano nel tempo. Dopo aver aggiunto 2 posti prenotati:

posti_prenotati += 2

ricalcoliamo i posti disponibili. Questo approccio è corretto perché evita di memorizzare valori obsoleti. In pratica, meglio ricalcolare un dato derivato quando serve, invece di aggiornarlo in più punti del programma.

Best practice

  • Usa nomi di variabili descrittivi: posti_disponibili è molto più chiaro di pd.
  • Separa i dati dai messaggi: conserva i numeri come numeri e convertili in stringhe solo quando devi mostrarli.
  • Preferisci le f-string per formattare testo in modo leggibile e moderno.
  • Ricalcola i valori derivati quando cambiano i dati di partenza, invece di aggiornarli manualmente in più punti.
  • Usa i booleani per rappresentare stati chiari: confermato/non confermato, attivo/spento, disponibile/non disponibile.
  • Combina con attenzione and/or: questi operatori rendono le condizioni potenti, ma vanno scritti in modo leggibile.
  • Evita conversioni inutili: trasformare un numero in stringa troppo presto può complicare i calcoli successivi.

Riepilogo

In questo tutorial abbiamo visto come numeri, stringhe e booleani lavorino insieme in un caso d’uso pratico: la gestione di una prenotazione.

  • I numeri servono per contare, confrontare e calcolare.
  • Le stringhe servono per rappresentare informazioni leggibili e costruire messaggi.
  • I booleani servono per descrivere stati e prendere decisioni con if.

Il punto più importante da portare a casa è questo: in Python i tipi di base non sono concetti isolati, ma strumenti che collaborano continuamente. Un programma utile nasce proprio dalla combinazione di questi elementi, con conversioni mirate, condizioni chiare e output ben formattato.

Approfondisci con risorse ufficiali

  • Python Documentation - Built-in Types: documentazione ufficiale sui tipi base di Python.
  • Python Documentation - Numeric Types: approfondimento su interi, float e operazioni numeriche.
  • Python Documentation - Text Sequence Type str: riferimento ufficiale per le stringhe.
  • Python Documentation - Boolean Operations: guida agli operatori logici and, or, not.
  • Python Documentation - f-strings: documentazione sulla formattazione moderna delle stringhe.

SHARE