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()