|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jun 2009
Messaggi: 5537
|
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 |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Questo potrebbe esserti d'aiuto http://stackoverflow.com/questions/3...integer-or-not
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jun 2009
Messaggi: 5537
|
però servirebbe che ad una richiesta di input se il valore non è un intero dia un errore e richieda
|
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: Sep 2005
Città: Barcelona
Messaggi: 200
|
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.
__________________
Code without tests is broken by design. |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jun 2009
Messaggi: 5537
|
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 |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Jun 2009
Messaggi: 5537
|
l' errore lo dà comunque
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
|
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: May 2001
Messaggi: 12843
|
Quote:
Codice:
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) ... |
|
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Jun 2009
Messaggi: 5537
|
bene,quindi
Codice:
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) |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
|
Sono certo ci sia un modo migliore del mio, però per ora questo credo faccia al caso tuo:
Codice:
while True: try: intero = int(float(raw_input("Numero: "))) break except ValueError: print "Devi inserire un numero intero" print intero 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
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
|
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Jun 2009
Messaggi: 5537
|
risolto poco fa proprio con il discorso eccezione
grazie comunque |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:55.