Forum >> Principianti >> input e raw_input

Pagina: 1

Io uso Python 2.7.x e mi sono posto il seguente quesito:
Esiste in Python una soluzione che consenta di inserire, interi, decimali, o stringhe ed identificarne il tipo in un secondo momento?



'input' mi concede l'immissione di interi e decimali ma mi restituisce un codice d'errore se provo ad immettere una stringa.


'raw_input' invece, accetta qualsiasi tipo di immissione anche numerica, che però di fatto risulterà essere una stringa e quindi non mi sarà possibile operarvi come sui decimali('2'+'2'==22).




In pratica io vorrei richiedere all'utente l'immissione di un numero intero ma, qualora l'utente dovesse digitare una lettera identificarla come tale e chiedergli nuovamente l'inserimento di un valore numerico senza generare un codice d'errore.

Sapreste dirmi come fare?

Grazie in anticipo ;)






'input' in Py 2 è stato un errore di percorso, il suo utilizzo è pericolosissimo perché permette di inserire comandi qualunque, compresa la cancellazione del disco, quindi va dimenticato e va usato sempre e solo 'raw_input'.

Oppure, per "compatibilizzarsi" con la sintassi di Python3 (in cui input corrisponde al raw_input di Py2) basta scrivere all'inizio del programma:
input = raw_input
e così input funziona esattamente come raw_input, acquisisce sempre e solo una stringa e il suo uso è sicuro.


Detto questo, una stringa si può convertire in intero o float rispettivamente con int(stringa) e float(stringa).
Se contiene caratteri non validi viene generato un errore 'ValueError' che si può gestire con un blocco try/except
try:
    a = int(stringa)
except ValueError:
    ...quello che serve in caso di errore...




*** Il codice va evidenziato con il simbolo di fianco ai colori per non perdere l'indentazione ***
Grazie! :)
Era proprio quello che mi serviva sapere.



--- Ultima modifica di anacron333 in data 2016-04-04 05:51:05 ---


Pagina: 1



Esegui il login per scrivere una risposta.