Salta al contenuto
Note per Studenti Input e output da console

Input e output da console

In questa pagina 5

Flussi standard

Ogni programma ha tre flussi aperti dal sistema operativo:

Flusso Python C Di default
standard input sys.stdin stdin tastiera
standard output sys.stdout stdout schermo
standard error sys.stderr stderr schermo

Da terminale si possono reindirizzare: python prog.py < dati.txt > risultati.txt legge da file e scrive su file senza cambiare il codice.

Lettura: input

input(prompt) stampa il prompt, legge una riga fino all'invio e la restituisce senza il carattere di a capo, sempre come str.

python
nome = input("Nome: ")
n = int(input("Quanti? "))            # conversione esplicita
x = float(input("Valore: "))

Più valori sulla stessa riga:

python
a, b = input("Due interi: ").split()          # "3 7" -> '3', '7'
a, b = int(a), int(b)

valori = [int(t) for t in input().split()]    # numero qualunque di interi
a, b = map(int, input().split())              # map applica int a ogni pezzo

Leggere fino alla fine dell'input (utile con il reindirizzamento):

python
import sys
for riga in sys.stdin:
    riga = riga.rstrip("\n")
    ...

Scrittura: print

print(*oggetti, sep=" ", end="\n", file=sys.stdout) converte ogni oggetto con str(), li separa con sep e termina con end.

python
print("a", "b", "c")                 # a b c
print("a", "b", "c", sep="")         # abc
print("senza a capo", end="")
print(1, 2, 3, sep=", ")             # 1, 2, 3
print("errore!", file=sys.stderr)    # messaggi di errore su stderr
print(*[1, 2, 3])                    # 1 2 3: la lista spacchettata in argomenti

Per controllare il formato dei numeri si usano le f-string (vedi Stringhe in Pythonstr come sequenza immutabile di caratteri Unicode; indici e slicing; operatori; metodi principali (split, join, strip, find, replace...); f-string e formattazione; confronto lessicografico.Stringhe in Python →):

python
print(f"{'Nome':<10}{'Voto':>5}")
for nome, voto in [("Ada", 30), ("Alan", 28)]:
    print(f"{nome:<10}{voto:>5}")

Input non valido

Se l'utente scrive abc dove serve un numero, int() solleva ValueError e il programma termina. Per richiedere di nuovo il dato si combina il ciclo di validazione del Ciclo whileCiclo while, cicli controllati da contatore, da sentinella e da condizione; break, continue, else; terminazione e invariante di ciclo.Ciclo while → con try/except (Eccezioni in PythonEccezioni e traceback, eccezioni predefinite più comuni, try/except/else/finally, raise per segnalare errori, propagazione lungo le chiamate.Eccezioni in Python →):

python
while True:
    try:
        n = int(input("Intero positivo: "))
        if n > 0:
            break
    except ValueError:
        pass
    print("Riprova.")

Errori tipici

  • Confrontare o sommare il risultato di input() senza convertirlo: input() + 1 → TypeError, input() == 5 sempre falso.
  • int("3.5") → ValueError: per decimali usare float.
  • Lasciare spazi o righe vuote non gestite: .strip() e controllo della stringa vuota.

Teoria collegata