La funzione input di Python
La funzione input di Python mi permette di immettere dati tramite la tastiera tramite un'operazione di data entry..
input(prompt)
Quando il programma incontra la funzione input, si ferma e mi chiede digitare qualcosa.
L'esecuzione del programma riprende dopo aver digitato qualcosa e dato invio.
Nota. Il parametro prompt è facoltativo. E' l'eventuale stringa testuale da visualizzare prima dell'immessione dei dati.
Un esempio pratico
Esempio 1
La funzione input() mi chiede digitare il mio nome.
>>> nome=input("come ti chiami?")
come ti chiami?Andrea
Digito il mio nome e do invio.
Il data entry viene salvato nella variabile nome.
Ora uso l'istruzione print per stampare a video il contenuto della variabile nome.
>>> print(nome)
Andrea
E' un esempio semplice ma utile per capire come funziona.
Il caso dei valori numerici
Tutto quello che viene digitato nella funzione input viene salvato in formato stringa (valore alfanumerico). E questo potrebbe causare degli errori.
Esempio
Se il dato immesso è successivamente usato come valore numerico, l'interprete python va in errore.
>>> prezzo=input()
4
>>> prezzo
'4'
>>> prezzo+2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str
Per risolvere questo problema, devo trasformare il dato immesso in numerico tramite la funzione float().
>>> prezzo=input()
4
>>> prezzo=float(prezzo)
>>> prezzo+2
6.0
Attenzione
Se l'utente digita una stringa con caratteri non numerici, la funzione float() va in errore.
>>> prezzo=input()
4a
>>> float(prezzo)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: could not convert string to float: '4a'
Quindi, è una buona prassi condizionare l'esecuzione della funzione float() con un controllo sul valore numerico della variabile da convertire tramite la funzione isnumeric().
>>> prezzo=input()
4a
>>> if (prezzo.isnumeric()): prezzo=float(prezzo)
E così via.