Capitolo 2 · Input, elaborazione e output¶
Cosa impari
- a mostrare risultati con
printe a commentare il codice con#; - a creare variabili e a conoscere i tipi
int,floatestr; - a leggere dati da tastiera con
inpute 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, come7o-9;float: numeri reali, scritti con il punto decimale, come1.5o5.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.
Soluzione
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 %.
Soluzione
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.