View Full Version : Controllare se valore inserito è intero - Python
Come si può chiedere ad un utente un valore e se esso non è un intero restituire un errore?
Grazie in anticipo
clockover
17-08-2013, 08:22
Questo potrebbe esserti d'aiuto http://stackoverflow.com/questions/3501382/checking-whether-a-variable-is-an-integer-or-not
però servirebbe che ad una richiesta di input se il valore non è un intero dia un errore e richieda
Secondo me dovresti prima porti una domanda: per te, 4.0 è un intero o un numero reale? Se lo consideri un reale, allora isinstance dovrebbe esser piu che sufficiente.
Se lo consideri intero, allora potresti usar qualcosa come int(x) == x. In questo caso, se la parte reale è nulla, la condizione è vera.
ad esempio inserendo un carattere restituisce un errore
ad esempio "print inserire 0 o 1"
l' utente digita f
richiede "print inserire 0 o 1"
l' utente digita 0
prosegue
clockover
18-08-2013, 08:35
però servirebbe che ad una richiesta di input se il valore non è un intero dia un errore e richieda
Non sono esperto di Python, ma in questo caso non penso ce ne sia bisogno...
Oltre alla lecita osservazione di cj++, hai letto il link che ho postato?
clockover
18-08-2013, 10:54
l' errore lo dà comunque
Ma che errore? Puoi postare il codice
ad esempio inserendo un carattere restituisce un errore
ad esempio "print inserire 0 o 1"
l' utente digita f
richiede "print inserire 0 o 1"
l' utente digita 0
prosegue
Una cosa del genere può essere fatta molto semplicemente così:
c = None
while c!='0' and c!='1':
print "Inserire 0 o 1: "
c = raw_input()
# dopo il ciclo while sei sicuro che c conterrà 0 o 1 e puoi trasformarlo in intero
i = int(c)
...
bene,quindi
c = None
while c!='0' and c!='1':
print "Inserire 0 o 1: "
c = raw_input()
print type(c)
c=int(c)
print type(c)
si converte 0 o 1 in intero. Però se ad esempio si vuole far inserire un valore <= a 180 che iteri la richiesta finchè non si dà un intero (come in questo caso non solo per 0 o 1),come si può fare?
Sono certo ci sia un modo migliore del mio, però per ora questo credo faccia al caso tuo:
while True:
try:
intero = int(float(raw_input("Numero: ")))
break
except ValueError:
print "Devi inserire un numero intero"
print intero
Se inserisci un numero, intero o decimale, ti restituisce la parte intera.
Se inserisci altro, ti costringe a reinserire il numero.
Se vuoi che il numero inserito sia anche minore di 180,basta inserire un if prima del break.
EDIT: È necessario passare da float e poi int perchè non si può convertire un float scritto come stringa in intero. Tipo '3.0' non può essere convertito in intero direttamente, ma devi prima convertirlo in 3.0.
'3.0'-> 3.0 -> 3
risolto poco fa proprio con il discorso eccezione
grazie comunque
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.