Estoy tratando de escribir un código para editar una lista y convertirlo en un palíndromo.
Todo funciona, excepto que mi entrada todavía me da un error. Cuando ingreso un no-int en get_number_2
, se bloquea.
def get_number(): num = raw_input("Please enter number between 100,000 and 1,000,0000: ") if not num.isdigit(): print "---------------------------" print "Invalid input: numbers only" print "---------------------------" my_main() else: return num def get_number_2(n): num = input("Please confirm the number you have entered: ") if num != int(n): print "--------------------" print "Entries do not match" print "--------------------" my_main() else: return num
Utilizo la entrada de get_number_2
para el rest del código, ya que get_number
no funciona cuando get_number
si está entre dos números.
¿Hay alguna manera de validar si la entrada es un int en get_number_2
para poder deshacerme de get_number
?
También debe usar raw_input
e int(num)
:
def get_number_2(n): num = raw_input("Please confirm the number you have entered: ") if not num.isdigit() or int(num) != n: print "--------------------" print "Entries do not match" print "--------------------" my_main() else: return int(num)
Notas :
n
es un int, o para verificar esto, puede cambiar el if: if not num.isdigit() or not n.isdigit() or int(num) != int(n)
. isdigit
, verificamos si es un número entero antes de convertirlo realmente en int
. Progtwig de escritura que maneja la excepción. Si el usuario ingresa un entero no válido, lanza la excepción ValueError
:
try: a = int(b) except ValueError: print "Unable to interpret your input as a number"
Debes actualizar tu pregunta de esta manera:
def get_number_2(n): num = input("Please confirm the number you have entered: ") try: if num != int(n): print "--------------------" print "Entries do not match" print "--------------------" my_main() else: return num except ValueError: print "Unable to interpret your input as a number"
No puede hacer num != int(n)
porque intentará llamar a int(n)
que no es válido si n
no es en realidad un entero.
La forma correcta de hacer esto es usar try
y except
try: n = int(n) except ValueError: print 'Entry is not an integer.' #handle this in some way
Edición: También en Python 2.x, use raw_input()
lugar de input()
. input()
da resultados muy extraños si no sabes lo que está haciendo.
from operator import attrgetter num0 = input() if not attrgetter('isdigit')(num0)(): print("that's not a number")