Lettura dell'input da tastiera
Molti programmi sono interattivi. Il supporto dell'interattività significa che un programma viene eseguito in modo diverso a seconda dell'input. Chi esegue l'input dei dati in un programma è in genere un utente, ma può anche essere un altro programma. Esistono molti modi per inviare input a un programma, due dei quali prevedono l'uso di un'interfaccia grafica o una console.
Input utente
Per leggere l'input da tastiera, Python offre la funzione input()
. La funzione input()
legge quanto digitato dall'utente sulla tastiera e lo restituisce sotto forma di stringa. Di seguito viene riportato un esempio che combina input()
e print()
per acquisire il nome di una persona e visualizzarlo sullo schermo:
name = input('Enter your name:')
print(name)
La stringa passata come argomento alla funzione input
è la richiesta che verrà visualizzata dall'utente. In questo esempio si chiede all'utente di digitare il proprio nome ('Enter your name'). Dopo che l'utente ha digitato un nome e premuto INVIO, la funzione input
viene restituita. Il valore restituito della funzione è il testo digitato dall'utente e questo testo è assegnato alla variabile denominata name
. La variabile name
viene quindi usata come input o argomento per la funzione print
che restituirà come output il nome immesso dall'utente.
È possibile chiamare la funzione input
anche senza un parametro:
print('What is your name?')
name = input()
print(name)
Questo programma avrà un comportamento quasi identico al primo. La differenza è che print
, per impostazione predefinita, aggiunge una nuova riga all'output.
Lettura di numeri come input
La funzione input
restituisce sempre il valore digitato come stringa (testo). Questo comportamento ha senso perché l'utente può immettere qualsiasi valore. Anche se l'input è un numero valido, viene comunque restituito come tipo stringa dalla funzione input
. Ad esempio:
x = input('Enter a number: ')
print(type(x))
L'esecuzione di questo codice e l'immissione del valore '5' determinano la visualizzazione di <class 'str'>
anche se si tratta di un valore numerico. Per trasformare il valore in una variabile di tipo Integer, è possibile usare la funzione int()
:
x = int(input('Enter a number: '))
print(type(x))
Questo codice restituirà <class 'int'>
per il valore "5". È possibile usare la funzione float
allo stesso modo se si prevede una componente frazionaria.
Importante
Cosa accade se l'input non è numerico e viene passato alla funzione int()
? Come è prevedibile, si tratta di un errore che determina un errore di runtime. Il programma viene terminato in corrispondenza di questa istruzione. Si può fare una prova nella console interattiva di Python. Nei prossimi moduli verranno illustrate varie soluzioni per gestire questo tipo di errori.
Conversione di numeri in stringhe
È possibile procedere anche in direzione inversa. Il metodo str()
accetta un numero intero o un valore a virgola mobile e lo trasforma in una stringa. Se si vuole che l'esempio di codice seguente funzioni, è necessario chiamare il metodo str()
. La conversione garantisce che il numero intero, nel formato stringa, sia concatenato alla stringa a sinistra.
x = 5
print('The number is ' + str(x))