Vai al contenuto

Capitolo 2 · Input, elaborazione e output

Cosa impari

  • a mostrare risultati con print e a commentare il codice con #;
  • a creare variabili e a conoscere i tipi int, float e str;
  • a leggere dati da tastiera con input e a convertirli in numeri;
  • a fare calcoli con gli operatori matematici e a formattare l'output con le f-string.

Quasi ogni programma segue tre passaggi: riceve un input (ad esempio dati digitati sulla tastiera), lo elabora (ad esempio con dei calcoli) e produce un output (il risultato mostrato sullo schermo). In questo capitolo impari gli strumenti di Python per ciascuno dei tre passaggi.

Prima di scrivere codice conviene progettare: capire che cosa deve fare il programma e scrivere i passaggi in pseudocodice, un linguaggio informale senza regole di sintassi. Solo dopo si traduce in Python.

Output con print

Una funzione è un pezzo di codice già scritto che svolge un'operazione. La funzione print visualizza sullo schermo ciò che le passi tra le parentesi. Il testo va scritto tra virgolette: è una stringa.

# Questo programma visualizza il nome
# e l'indirizzo di una persona.
print('Mario Rossi')
print('Via Nino Bixio 39')
print('27020 Dorno - PV')

Le righe che iniziano con # sono commenti: Python le ignora, servono a chi legge il codice per capire cosa fa.

Variabili e assegnazione

Una variabile è un nome che fa riferimento a un valore nella memoria del computer. Si crea con un'istruzione di assegnazione: variabile = espressione.

larghezza = 10
lunghezza = 5
print(larghezza)
print('larghezza')        # tra virgolette: stampa il testo, non il valore
print('Area:', larghezza * lunghezza)

Con print puoi mostrare più elementi separandoli con una virgola: Python inserisce uno spazio tra l'uno e l'altro.

Una variabile può cambiare valore durante il programma: la nuova assegnazione sostituisce la precedente.

dollari = 2.75
print('Ho', dollari, 'sul mio conto.')
dollari = 99.95
print('Ora invece ho', dollari, 'sul mio conto!')

Regole per i nomi: niente spazi, niente parole chiave di Python (come if o print), il primo carattere deve essere una lettera o _, poi lettere, cifre e _. Maiuscole e minuscole sono diverse: eta ed Eta sono due variabili distinte. Per i nomi composti si usa retribuzione_oraria (con il trattino basso) oppure retribuzioneOraria.

Nome Valido?
unita_al_giorno sì
giornoDellaSettimana sì
3dGraph no: inizia con un numero
Misto#3 no: contiene #

Tipi di dato: int, float, str

Python distingue i valori per tipo:

  • int: numeri interi, scritti senza punto, come 7 o -9;
  • float: numeri reali, scritti con il punto decimale, come 1.5 o 5.0;
  • str: stringhe di testo, tra virgolette, come 'Maria'.

La funzione type ti dice il tipo di un valore. Nei numeri non si scrivono simboli di valuta, spazi o virgole: 4567.99 è corretto, 4,567.99 no.

print(type(1))
print(type(1.0))
print(type('Maria'))
x = 99
print(x)
x = 'Ciao a tutti!'   # la stessa variabile ora fa riferimento a una stringa
print(x)

Input da tastiera

La funzione input mostra un messaggio (il prompt), aspetta che l'utente scriva qualcosa e prema Invio, e restituisce sempre una stringa, anche se l'utente ha digitato un numero. Per fare calcoli devi convertirla con int(...) o float(...).

nome = input('Come ti chiami? ')
ore = int(input('Quante ore hai lavorato? '))
paga_oraria = float(input('Qual è la tua paga oraria? '))
print('Ciao', nome)
print('Paga lorda:', ore * paga_oraria)

Attenzione

int() e float() funzionano solo se la stringa contiene un numero valido. Prova a rispondere otto oppure 8,5 all'esempio sopra: ottieni un ValueError. Per i decimali si usa il punto: 8.5.

Calcoli

Simbolo Operazione Esempio Risultato
+ addizione 12 + 2 14
- sottrazione 12 - 2 10
* moltiplicazione 12 * 2 24
/ divisione (risultato float) 5 / 2 2.5
// divisione intera 5 // 2 2
% resto 17 % 3 2
** elevamento a potenza 2 ** 3 8

Precedenza: prima le parentesi, poi **, poi * / // %, infine + -. A parità di precedenza si va da sinistra a destra.

Tipi misti: tra due int il risultato è int, tra due float è float; se mescoli int e float il risultato è float. int(2.6) tronca la parte decimale e dà 2.

print(5 / 2, 5 // 2, -5 // 2)
print(17 % 3)
print(2 + 3 * 4, (2 + 3) * 4)
print(5 * 2.0)
print(int(2.6), int(-2.9), float(2))

Nota che -5 // 2 dà -3: con risultati negativi la divisione intera arrotonda per difetto.

Stringhe: concatenazione e f-string

L'operatore + tra stringhe le concatena, cioè le unisce. Le f-string (stringhe precedute da f) permettono di inserire il valore delle variabili tra parentesi graffe e di formattare i numeri: {prezzo:.2f} mostra il numero con 2 decimali.

messaggio = 'Hello ' + 'world'
print(messaggio)
nome = 'Johnny'
prezzo = 8.5
print(f'Ciao {nome}.')
print(f'Il biglietto costa {prezzo:.2f} euro.')

Costanti con nome

Un numero che compare nel codice senza spiegazione è difficile da capire. Una costante con nome, scritta tutta in maiuscolo, gli dà un significato e si cambia in un solo punto.

TASSO_INTERESSE = 0.069
saldo = float(input('Saldo del conto: '))
importo = saldo * TASSO_INTERESSE
print(f'Interessi: {importo:.2f} euro')

Errori tipici

Errore Cosa succede Come si corregge
eta = 2026 - input('Anno? ') TypeError: sottrai una stringa da un numero int(input(...))
25 = eta SyntaxError: la variabile va a sinistra dell'uguale eta = 25
print(Nome) dopo nome = 'Ada' NameError: maiuscole e minuscole contano usa lo stesso nome
float('8,50') ValueError: i decimali vogliono il punto float('8.50')

Esercizi

Esercizio 1 · Temperatura. Chiedi una temperatura in gradi Celsius e mostra il valore in Fahrenheit con la formula F = 9/5 × C + 32, con un decimale.

# Scrivi qui la tua soluzione
Soluzione
celsius = float(input('Temperatura in gradi Celsius: '))
fahrenheit = 9 / 5 * celsius + 32
print(f'{celsius} °C corrispondono a {fahrenheit:.1f} °F')

Esercizio 2 · Ore e minuti. Chiedi un numero di minuti e mostra quante ore e quanti minuti sono. Ad esempio 135 minuti sono 2 ore e 15 minuti. Usa // e %.

# Scrivi qui la tua soluzione
Soluzione
minuti_totali = int(input('Minuti: '))
ore = minuti_totali // 60
minuti = minuti_totali % 60
print(minuti_totali, 'minuti sono', ore, 'ore e', minuti, 'minuti')

Esercizio 3 · Scontrino. Chiedi il prezzo di un articolo e la quantità acquistata. Mostra il totale e il totale con l'IVA al 22%, entrambi con due decimali. Usa una costante per l'aliquota.

# Scrivi qui la tua soluzione
Soluzione
IVA = 0.22
prezzo = float(input('Prezzo unitario: '))
quantita = int(input('Quantità: '))
totale = prezzo * quantita
totale_ivato = totale * (1 + IVA)
print(f'Totale: {totale:.2f} euro')
print(f'Totale con IVA: {totale_ivato:.2f} euro')

Verifica