Inputnya mungkin sebagai berikut:
a="50"
b=50
c=50.1
d="50.1"
Input 1-Umum:
Input dari fungsi ini bisa menjadi segalanya!
Menemukan apakah variabel yang diberikan adalah numerik. String numerik terdiri dari tanda opsional, sejumlah digit, bagian desimal opsional, dan bagian eksponensial opsional. Jadi + 0123.45e6 adalah nilai numerik yang valid. Notasi heksadesimal (mis. 0xf4c3b00c) dan biner (mis. 0b10100111001) tidak diizinkan.
fungsi 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
uji:
>>> is_numeric("54")
True
>>> is_numeric("54.545")
True
>>> is_numeric("0x45")
True
is_floatfungsi
Menemukan apakah variabel yang diberikan adalah float. string float terdiri dari tanda opsional, sejumlah digit, ...
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
uji:
>>> is_float("5.4")
True
>>> is_float("5")
False
>>> is_float(5)
False
>>> is_float("5")
False
>>> is_float("+5.4")
True
apa itu ast ?
2- Jika Anda yakin bahwa konten variabel adalah String :
gunakan metode 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
Input 3-Angka:
mendeteksi nilai int:
>>> isinstance("54", int)
False
>>> isinstance(54, int)
True
>>>
mendeteksi float:
>>> isinstance("45.1", float)
False
>>> isinstance(45.1, float)
True