A entrada pode ser a seguinte:
a="50"
b=50
c=50.1
d="50.1"
Entrada 1-Geral:
A entrada desta função pode ser tudo!
Localiza se a variável especificada é numérica. Sequências numéricas consistem em sinal opcional, qualquer número de dígitos, parte decimal opcional e parte exponencial opcional. Portanto, + 0123.45e6 é um valor numérico válido. Notação hexadecimal (por exemplo, 0xf4c3b00c) e binária (por exemplo, 0b10100111001) não é permitida.
função is_numeric
import ast
import numbers
def is_numeric(obj):
if isinstance(obj, numbers.Number):
return True
elif isinstance(obj, str):
nodes = list(ast.walk(ast.parse(obj)))[1:]
if not isinstance(nodes[0], ast.Expr):
return False
if not isinstance(nodes[-1], ast.Num):
return False
nodes = nodes[1:-1]
for i in range(len(nodes)):
#if used + or - in digit :
if i % 2 == 0:
if not isinstance(nodes[i], ast.UnaryOp):
return False
else:
if not isinstance(nodes[i], (ast.USub, ast.UAdd)):
return False
return True
else:
return False
teste:
>>> is_numeric("54")
True
>>> is_numeric("54.545")
True
>>> is_numeric("0x45")
True
função is_float
Localiza se a variável fornecida é flutuante. strings flutuantes consistem em sinal opcional, qualquer número de dígitos, ...
import ast
def is_float(obj):
if isinstance(obj, float):
return True
if isinstance(obj, int):
return False
elif isinstance(obj, str):
nodes = list(ast.walk(ast.parse(obj)))[1:]
if not isinstance(nodes[0], ast.Expr):
return False
if not isinstance(nodes[-1], ast.Num):
return False
if not isinstance(nodes[-1].n, float):
return False
nodes = nodes[1:-1]
for i in range(len(nodes)):
if i % 2 == 0:
if not isinstance(nodes[i], ast.UnaryOp):
return False
else:
if not isinstance(nodes[i], (ast.USub, ast.UAdd)):
return False
return True
else:
return False
teste:
>>> is_float("5.4")
True
>>> is_float("5")
False
>>> is_float(5)
False
>>> is_float("5")
False
>>> is_float("+5.4")
True
o que é ast ?
2- Se você tem certeza de que o conteúdo da variável é String :
use o método str.isdigit ()
>>> a=454
>>> a.isdigit()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'int' object has no attribute 'isdigit'
>>> a="454"
>>> a.isdigit()
True
Entrada numérica 3:
detectar valor int:
>>> isinstance("54", int)
False
>>> isinstance(54, int)
True
>>>
detectar flutuador:
>>> isinstance("45.1", float)
False
>>> isinstance(45.1, float)
True