Corso Python / Variabili, commenti, input e output

In Python una variabile associa un nome a un valore, input() legge testo e print() mostra un risultato. Anche quando digiti delle cifre, l’input è una stringa: convertilo in numero prima di usarlo nei calcoli.

Assegnare valori e usare i commenti

L’operatore = calcola l’espressione a destra e associa il risultato al nome a sinistra. Non verifica un’uguaglianza matematica. Una nuova assegnazione allo stesso nome cambia il valore usato dalle istruzioni successive:

amount = 3500
amount = amount + 500
print(amount)  # Display the calculated result

Il risultato è 4000: la seconda riga legge il precedente valore di amount, aggiunge 500 e riassegna il risultato. Il testo dopo # è un commento e non viene eseguito. Un commento è utile per spiegare unità, scelte o vincoli; non serve ripetere ogni istruzione con altre parole.

Scegli nomi che descrivano il dato, come amount per un importo. Evita di usare print, input o list come nomi di variabili: nasconderesti funzioni e tipi predefiniti. Se l’hai fatto in una sessione interattiva, avviare una nuova sessione ripristina i nomi originali.

Eseguire un programma completo con input e output

Crea una cartella di esercitazione e salva il seguente codice nel file UTF-8 input_expense.py. Non sono necessarie librerie esterne. Dal terminale della cartella, con l’interprete del progetto selezionato, esegui python input_expense.py. Se su macOS o Ubuntu usi un’installazione fuori dall’ambiente virtuale, il comando disponibile può essere python3. Per verificare l’ambiente consulta la guida su venv e pip.

name = input("name: ").strip()
amount_text = input("amount: ").strip()
amount = int(amount_text)
print(f"{name}: {amount:,} KRW")

Alla richiesta name: digita lunch e premi Invio; alla richiesta amount: digita 8000 e premi Invio. Il nome significa «pranzo», mentre KRW indica i won sudcoreani usati nell’esempio. Lo standard output del programma, senza i caratteri digitati dall’utente, è:

name: amount: lunch: 8,000 KRW

Questo blocco raccoglie solo ciò che il programma scrive. In un terminale interattivo vedrai normalmente anche gli input e gli Invio: le richieste appariranno su righe diverse. I prompt di input() non aggiungono da soli una nuova riga.

Seguire il passaggio dal testo al numero

La prima riga legge il nome della spesa e strip() elimina gli spazi iniziali e finali. La seconda riga fa lo stesso con l’importo, ma amount_text resta testo. Solo int(amount_text) crea un intero, memorizzato nel nome amount. La documentazione di input e delle funzioni predefinite descrive questi tipi di ritorno e le conversioni.

La lettera f davanti alla stringa consente di inserire valori tra parentesi graffe. Nella parte {name} compare il nome; in {amount:,} la virgola richiede la separazione delle migliaia. La specifica ufficiale della formattazione distingue questa opzione dalla formattazione dipendente dalla lingua: qui 8000 appare come 8,000, senza convertire la valuta e senza adottare automaticamente i separatori italiani.

Se inserisci 20, il dato iniziale è la stringa "20"; dopo la conversione è il numero intero 20. Un numero scritto dentro una stringa non diventa numerico solo perché sembra una quantità. strip() rimuove spazi ai bordi, ma non corregge separatori, lettere o cifre decimali.

Cambiare un input e riconoscere gli errori

  1. Esegui nuovamente il file con lo stesso nome e importo 9000: il risultato deve terminare con 9,000 KRW.
  2. Prova 8000.5: int() non interpreta una stringa con punto decimale e genera ValueError. Non si tratta di arrotondamento.
  3. Prova un importo vuoto oppure abc: anche questi valori generano ValueError. Ripristina 8000 e verifica il risultato originale.

Il programma minimo termina quando la conversione fallisce: non contiene un ciclo per chiedere di nuovo il dato. Accetta invece zero e numeri negativi, perché la conversione a intero non applica una regola sulle spese; accetta anche un nome vuoto. Un’applicazione reale deve decidere quali valori ammettere e come chiedere una correzione.

Se il cursore resta fermo dopo una richiesta, controlla se input() sta semplicemente aspettando una risposta. Un errore di conversione si riconosce dal traceback e dal nome ValueError; l’attesa di input non è un’eccezione. Per capire il comportamento, segui i nomi e il punto esatto in cui il testo viene convertito.