raw_input from for python string python-2.7 integer raw-input

from - raw_input python



¿Cómo puedo verificar si la entrada sin procesar es un número entero en Python 2.7? (4)

Puedes hacerlo de esta manera:

try: val = int(raw_input("number: ")) except ValueError: # not an integer

¿Hay algún método que pueda usar para verificar si un raw_input es un número entero?

Encontré este método después de investigar en la web:

print isinstance(raw_input("number: ")), int)

pero cuando lo ejecuto y ingreso 4 por ejemplo, me sale FALSE . Soy algo nuevo para Python, cualquier ayuda sería apreciada.


aquí está mi solución

`x =raw_input(''Enter a number or a word: '') y = x.isdigit() if (y == False): for i in range(len(x)): print(''I''), else: for i in range(int(x)): print(''I''),

`


isinstance(raw_input("number: ")), int) siempre produce False porque raw_input devuelve un objeto de cadena como resultado.

Use try: int(...) ... except ValueError :

number = raw_input("number: ") try: int(number) except ValueError: print False else: print True

o use str.isdigit :

print raw_input("number: ").isdigit()

NOTA El segundo arroja False para -4 porque contiene caracteres que no son dígitos. Use el segundo si solo quiere dígitos.

ACTUALIZACIÓN Como señaló JF Sebastian, str.isdigit depende de la configuración regional (Windows). Podría devolver True incluso int() elevaría ValueError para la entrada.

>>> import locale >>> locale.getpreferredencoding() ''cp1252'' >>> ''/xb2''.isdigit() # SUPERSCRIPT TWO False >>> locale.setlocale(locale.LC_ALL, ''Danish'') ''Danish_Denmark.1252'' >>> ''/xb2''.isdigit() True >>> int(''/xb2'') Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: ''/xb2''


def checker(): inputt = raw_input("how many u want to check?") try: return int(inputt) except ValueError: print "Error!, pls enter int!" return checker()