🔁 Avanzamento corso: Lezione 3 di Base – Python
🎯 Obiettivi didattici
- Capire come funziona l’input da tastiera con
input()e quando usarlo. - Eseguire la conversione di tipi con
int(),float()estr()in modo sicuro. - Presentare l’output con
print()e formattazione (concatenazione,format(), f-string). - Prevenire e gestire errori comuni (
ValueError,EOFError) contry/excepte validazioni.
📚 Indice del corso (estratto)
- Introduzione a Python, print e variabili
- Tipi di dati fondamentali (int, float, str, bool)
- Input da tastiera e output in Python (questa lezione)
- Operatori aritmetici, logici e di confronto (prossima lezione)
🧭 Introduzione
Per rendere i tuoi programmi interattivi, devi saper leggere input da tastiera e mostrare un output chiaro. In questa lezione vedrai come usare input() per raccogliere dati e come convertirli correttamente con int(), float() e str(). Inoltre, imparerai tecniche pratiche per formattare l’output in modo leggibile, evitando errori comuni.
✨ Obiettivo pratico: al termine, saprai creare piccoli script che chiedono dati all’utente, li validano, li elaborano e stampano un output formattato.
📖 Sezione teorica – Input da tastiera e output in Python
🔹 input()
input(prompt) mostra un messaggio (opzionale) e attende che l’utente digiti del testo e prema Invio. Il valore restituito è sempre una stringa (str).
Esempio minimale:
name = input("Enter your name: ")
print("Hello, " + name + "!")
👉 Nota: se l’utente invia EOF (ad es. Ctrl+D su Linux/macOS o Ctrl+Z su Windows) senza inserire testo, viene sollevato EOFError.
🔹 Conversione di tipo: int(), float(), str()
Dato che input() restituisce stringhe, per eseguire calcoli devi convertire:
age_str = input("Enter your age: ")
age = int(age_str) # converte "21" → 21
print("Next year you will be " + str(age + 1))
int("42") → 42float("3.14") → 3.14str(3.14) → "3.14"
💡 Suggerimento: preferisci la validazione prima della conversione; in alternativa usa
try/exceptper intercettareValueError.
🔹 Output con print() e formattazione
Tre modi comuni per costruire stringhe:
- Concatenazione:
"Hello, " + name str.format():"Hello, {}".format(name)- f-string (consigliato):
f"Hello, {name}"
Le f-string sono più leggibili e performanti nella maggior parte dei casi.
Esempi di formattazione numerica:
price = 5.5
qty = 3
print(f"Total: {price * qty:.2f} €") # 2 decimali
print("Total: {:.2f} €".format(price * qty))
💬 Domanda per te: in quali casi useresti format() al posto delle f-string?
🔶 Esempi pratici guidati
1) Echo interattivo
message = input("Write a message: ")
print("You said:", message)
2) Somma di due numeri interi
a = int(input("Insert first number: "))
b = int(input("Insert second number: "))
print("Sum =", a + b)
3) Media di due decimali
x = float(input("First decimal: "))
y = float(input("Second decimal: "))
average = (x + y) / 2
print("Average =", average)
4) BMI con formattazione (f-string)
name = input("Name: ")
weight = float(input("Weight in kg: "))
height = float(input("Height in meters: "))
bmi = weight / (height ** 2)
print(f"{name}, your BMI is {bmi:.2f}.")
5) Input robusto con try/except
while True:
age_str = input("Enter your age: ")
try:
age = int(age_str)
if 1 <= age <= 120:
break
else:
print("Please enter an age between 1 and 120.")
except ValueError:
print("Invalid input. Please enter a whole number.")
print("Thanks, you are", age)
⚠️ Errore comune da evitare
Errore tipico: sommare direttamente stringhe e numeri
age_str = input("Enter your age: ")
age = age_str + 1 # ❌ TypeError: str + int
✅ Soluzione: eseguire la conversione prima dell’operazione numerica (age = int(age_str)).
Errore tipico: usare la virgola come separatore decimale (
"1,75") quando Python si aspetta il punto ("1.75"). Converti o sostituisci:float(height_str.replace(",", ".")).
Errore tipico: f-string con espressioni non desiderate o non sicure. Evita di interpolare input non validati in comandi di shell/SQL.
📝 Esercizio finale
Crea uno script che:
- Chieda nome, età e altezza in metri (es.
1.75). - Validi i dati: età ∈ [1, 120], altezza ∈ [0.5, 2.5].
- Stampi:
"Hello {name}, in one year you’ll be {age+1} and your height is {height:.2f} m." - Extra: se l’utente inserisce altezza con la virgola, gestiscila correttamente sostituendo
"," → ".".
🧠 Quiz a scelta multipla
Domande
input()restituisce originariamente un valore di tipo…
a)int· b)str· c)float- Qual è il modo corretto di sommare due numeri chiesti all’utente?
a)input()+input()· b)int(input())+int(input())· c)str(input())+str(input()) - Quale riga formatta il totale a due decimali?
a)print("Total:", total)· b)print(f"Total: {total:.2f}")· c)print("Total: {}".format(total)) - Cosa potrebbe sollevare
EOFError?
a)input()quando l’utente invia EOF · b)print()· c)str() - Cosa fa
float("3,14")senza gestione preventiva?
a) Converte a3.14· b) SollevaValueError· c) RitornaNone
Risposte (non guardare prima di provare!):
- b · 2) b · 3) b · 4) a · 5) b
❓ FAQ
1) Posso usare input() senza prompt?
Sì, ma è meno chiaro per l’utente. Meglio includere un testo breve.
2) Come limito l’input a numeri positivi?
Valida con condizioni o ripeti la richiesta in un ciclo while finché non ricevi un valore valido.
3) Come stampo sempre due decimali?
Usa f"{val:.2f}" oppure "{:.2f}".format(val).
4) Come gestisco ValueError in conversione?
Racchiudi int() o float() in un try/except e mostra un messaggio chiaro.
5) input() blocca il programma?
Sì, finché l’utente non invia una riga o EOF.
6) Posso leggere più valori con un solo input()?
Sì, leggi una riga e fai split(), poi converti ciascun pezzo (a, b = map(int, input().split())).
7) Come stampo su file?
Usa print(data, file=open("out.txt", "w")) oppure gestisci esplicitamente lo stream con with open(...) as f: f.write(...).
🔗 Link
- Documentazione ufficiale Python –
input(),print(),int(),float(),str():
https://docs.python.org/3/library/functions.html#input
https://docs.python.org/3/library/functions.html#print
https://docs.python.org/3/library/functions.html#int
https://docs.python.org/3/library/functions.html#float
https://docs.python.org/3/library/functions.html#str - Tutorial ufficiale – Input/Output:
https://docs.python.org/3/tutorial/inputoutput.html - PEP 498 – f-strings (Literal String Interpolation):
https://peps.python.org/pep-0498/ - Approfondimento pratico – Basic Input and Output in Python (Real Python):
https://realpython.com/python-input-output/
🔗 Link
- Installare Python su macOS e Linux – guida passo‑passo:
https://www.saperesemplice.com/installare-python-macos-linux/ - Gestire ambienti con
pipevenvsu macOS e Linux:
https://www.saperesemplice.com/pip-venv-python-macos-linux/ - Corsi Python – Programmare da zero (panoramica percorso):
https://www.saperesemplice.com/corsi-informatica/corsi-di-informatica-python/
📚 Glossario tecnico
input(): legge una riga dallo standard input e la restituisce comestr(può sollevareEOFError).int(),float(),str(): funzioni di conversione dei tipi di base.print(): invia testo allo standard output, con opzionisep,end,file,flush.- f-string: notazione
f"...{expr}..."per formattare stringhe in modo leggibile. ValueError: eccezione comune quando la conversione fallisce.
🔁 Collegamento alla lezione successiva
➡️ Prosegui alla Lezione 5: Operatori aritmetici, logici e di confronto
Hai dubbi? Vuoi il PDF della lezione?
🗨️ Lascia un commento qui sotto · 📩 Scrivici per ricevere il PDF · 🔗 Condividi la lezione con un compagno di corso
📅 Aggiornato il 09/08/2025 –
