Error de entrada de Python simple

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 :

  • Supongo que el parámetro 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) .
  • Al usar 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")