¿Cómo verificar un número entero en Python 3.2?

Estoy intentando escribir un progtwig donde el usuario ingresa un número entero de dos dígitos y la salida es el segundo dígito impreso la cantidad de veces indicada por el primer dígito. Aquí está lo que tengo hasta ahora:

number = input('Type two-digit integer \n') a = int(number)//10 b = int(number)%10 if len(number) != 2: print(number, 'is not a two-digit integer') else: print(a*str(b)) 

Cuando pruebo esto, hace lo que pretendo que haga mientras alguien escriba números. Si alguien escribiera, digamos, 6r, aparecerá un mensaje de error diciendo:

a = int (número) // 10

ValueError: literal no válido para int () con base 10: ‘6r’

Asumiría que habría que poner algo en la segunda línea del código para probar si la entrada es realmente un número entero, ¿cómo lo haría? ¿Sería mejor reescribirlo de una manera diferente? Por favor, tenga en cuenta que estoy tomando un curso de introducción a Python y esta es una pregunta sobre un examen intermedio que estoy realizando, por lo que en el caso de que tenga que responder algo como esto en el examen intermedio real, no puedo usar un Muchos procesos complicados.

Esto es algo que intenté y que funciona si alguien escribe algo que no es un entero, pero por alguna razón, no sé, da el mismo mensaje para los no enteros a los enteros y no funciona como lo bash:

 number = input('Type two-digit integer \n') if (isinstance(number, int)) == False: print(number, 'is not a two-digit integer') elif len(number) != 2: print(number, 'is not a two-digit integer') else: a = int(number)//10 b = int(number)%10 print(a*str(b)) 

¡La ayuda sería muy apreciada!

La mejor opción aquí es atrapar la excepción. Algo ha salido mal, y eso es exactamente para lo que están diseñadas las excepciones:

 try: ... except ValueError: print("You need to enter an integer!") ... 

Python tiene el mantra de que es mejor pedir perdón que permiso , así que no compruebe si funciona de antemano, pruébelo y luego maneje el problema si no funciona.

Esto hace que el código sea más confiable (la verificación podría desautorizar accidentalmente una buena entrada o dejar pasar la entrada incorrecta), y hace que la lectura del código sea mejor (usted trata el caso normal primero, luego maneja los problemas, en lugar de tener que revisar los problemas, luego procesa ).

Este es un momento perfecto para try y except :

 try: val = int(number) except ValueError: print("That's not a number...") 

Tal vez lo más simple sería hacer number.isdigit() . isdigit devolverá verdadero si todos los caracteres de la cadena son dígitos, lo que significaría que es un entero positivo. Así que podrías hacer algo como:

 if not number.isdigit(): print "You didn't enter an integer!" 

Tenga en cuenta que usar try / except como sugieren otras respuestas permitirá números enteros negativos, lo que probablemente no tenga sentido para su caso de uso (no puede imprimir una cadena -2 veces).

La cosa es que realmente no quiere “un entero de dos dígitos”, quiere una cadena que consta de dos dígitos, que va a utilizar como dos números separados.

Me gustaría algo como:

 number = re.match(r'(\d)(\d)', input('Typo two digit number:\n')) if number is not None: print(int(number.group(1)) * number.group(2)) else: pass # something wasn't right...