P.7 Interrogare l’utente

Introduciamo un’istruzione del linguaggio molto utile che ci permetterà di creare i primi programmi interattivi. Potremo rivolgere delle domande all’utilizzatore dei nostri programmi e salvare le risposte fornite in una variabile.

Il comando da utilizzare si chiama input(). Tra le due parentesi inseriremo la domanda da porre. Per creare un saluto personalizzato possiamo scrivere:

nome = input("come ti chiami? ")
print("ciao", nome)

Listato 1.6 – Saluto personalizzato

Tra le due parentesi di input() troviamo la domanda “come ti chiami?”. La domanda è raccolta in una stringa e prende il nome di “parametro” della funzione input(). Invocando il comando, l’esecuzione si ferma attendendo che qualcuno inserisca l’informazione richiesta:

come ti chiami?

Subito di fianco al punto di domanda un cursore attende la risposta. Digitiamo un nome e premiamo invio.

come ti chiami? Paolo

La funzione restituisce la nostra risposta inserendola nella variabile nome. L’assegnazione è fatta direttamente. Possiamo infatti stampare il valore della variabile con print() ed ecco apparire sullo schermo il saluto personalizzato:

ciao Paolo

Creiamo un programma in cui richiediamo nome e età all’utilizzatore:

#saluto personalizzato
nome = input("come ti chiami? ")
print("ciao", nome)
n = input("quanti anni hai? ")
print("anni", n)

Listato 1.7 – Richiediamo più informazioni all’utente del nostro programma interattivo: nome ed età.

Un programma per le somme

Creiamo un programma interattivo che possa svolgere una semplice operazione. Richiederemo due numeri all’utente, li sommeremo in una variabile somma e infine stamperemo il risultato. Ecco una prima soluzione:

A = input("primo numero? ")
B = input("secondo numero? ")
S = A + B
print("somma: ", S)

Listato 1.8 – Prima versione del programma che somma due numeri forniti dall’utente.

Eseguiamo il programma e inseriamo due numeri:

primo numero? 10
secondo numero? 20

Il risultato riportato però non è quello atteso: ci aspettavamo 30, ma leggiamo 1020!

somma:  1020

Cosa è successo?

Questo strano comportamento ha a che fare con le proprietà delle stringhe di Python e con il fatto che in Python una variabile può contenere qualsiasi cosa. Sarà nostro compito occuparci dei valori memorizzati, eventualmente indicato a che tipo di dato si riferiscono, se sono testi, numeri interi o con virgola.

La funzione input() raccoglie una risposta “testuale” dall’utente. Se scriviamo “10”, nella variabile A non troviamo il numero 10, ma i caratteri “uno” e “zero”. Il contenuto di A non è il numero 10 come crediamo noi ma “la scritta 10”! Input() restituisce stringhe e caratteri. Se vogliamo che il valore restituito sia trattato come un numero intero, dobbiamo indicarlo esplicitamente. Possiamo allora utilizzare la funzione int(), che trasforma quanto gli forniamo in un numero intero. Modifichiamo il nostro programma:

A = input("primo numero? ")
B = input("secondo numero? ")
S = int(A) + int(B)
print ("somma: ", S)

Listato 1.9 – Programma per la somma di due numeri.

Eseguendolo nuovamente otterremo il risultato corretto:

primo numero? 10
secondo numero? 20
somma:  30

Cose da provare

  • Provate a scrivere un programma che richiede i dati anagrafici a una persona e li stampa a video.
  • Scrivete un programma che richiede due numeri e poi ne calcola: somma, differenza, prodotto e quoto (la divisione).