Skip to content

Input utente

Un programma che fa sempre le stesse cose con gli stessi dati è limitato. Con l’input utente, il programma può fare domande e comportarsi in modo diverso in base alle risposte. Questo è il primo passo per creare programmi davvero interattivi.

input() mostra un messaggio e poi si mette in attesa: il programma si ferma finché l’utente non scrive qualcosa e preme Invio.

nome = input("Come ti chiami? ")
print(f"Ciao, {nome}!")

Esempio di esecuzione:

Come ti chiami? Alice
Ciao, Alice!

Il testo dentro le parentesi di input() è il messaggio che viene mostrato all’utente.

Attenzione: input() restituisce sempre testo

Section titled “Attenzione: input() restituisce sempre testo”

Anche se l’utente digita un numero, input() lo tratta sempre come testo (stringa). Se vuoi fare calcoli, devi convertire:

# Questo NON funziona per fare calcoli:
eta_testo = input("Quanti anni hai? ")
# eta_testo è una stringa, es. "16" — non il numero 16!
# Converti con int() per avere un numero intero:
eta = int(input("Quanti anni hai? "))
print(f"Tra 10 anni avrai {eta + 10} anni.")
# Converti con float() per numeri decimali:
altezza = float(input("Altezza in metri: "))
print(f"Altezza: {altezza} m")

Se l’utente digita “pippo” invece di un numero e tu usi int(), il programma crasha con un errore.

Per gestire questo caso elegantemente, usa try/except:

try:
numero = int(input("Inserisci un numero: "))
print(f"Hai inserito: {numero}")
except ValueError:
print("Quello non era un numero! Riprova.")

Continuare a chiedere finché la risposta è valida

Section titled “Continuare a chiedere finché la risposta è valida”

Un pattern molto comune: ripetere la domanda finché l’utente non inserisce un valore accettabile.

while True:
try:
eta = int(input("Inserisci la tua età: "))
if eta < 0 or eta > 120:
print("Età non valida. Inserisci un numero tra 0 e 120.")
continue # riparte dall'inizio del ciclo
break # esce dal ciclo se tutto è ok
except ValueError:
print("Scrivi un numero, non del testo.")
print(f"La tua età è: {eta}")
print("Calcolatrice semplice")
print("-" * 20)
try:
a = float(input("Primo numero: "))
operazione = input("Operazione (+, -, *, /): ")
b = float(input("Secondo numero: "))
if operazione == "+":
risultato = a + b
elif operazione == "-":
risultato = a - b
elif operazione == "*":
risultato = a * b
elif operazione == "/":
if b == 0:
print("Errore: non si divide per zero!")
else:
risultato = a / b
else:
print("Operazione non riconosciuta.")
print(f"Risultato: {a} {operazione} {b} = {risultato}")
except ValueError:
print("Inserisci solo numeri validi.")