Đầu vào có thể như sau:
a="50"
b=50
c=50.1
d="50.1"
1-Đầu vào chung:
Đầu vào của chức năng này có thể là tất cả mọi thứ!
Tìm xem biến đã cho có phải là số không. Chuỗi số bao gồm dấu tùy chọn, bất kỳ số chữ số, phần thập phân tùy chọn và phần số mũ tùy chọn. Do đó + 0123,45e6 là một giá trị số hợp lệ. Không được phép ghi thập lục phân (ví dụ 0xf4c3b00c) và ký hiệu nhị phân (ví dụ 0b10100111001).
is_numeric chức năng
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
kiểm tra:
>>> is_numeric("54")
True
>>> is_numeric("54.545")
True
>>> is_numeric("0x45")
True
is_float chức năng
Tìm xem biến đã cho là float. chuỗi float bao gồm dấu tùy chọn, bất kỳ số chữ số nào, ...
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
kiểm tra:
>>> is_float("5.4")
True
>>> is_float("5")
False
>>> is_float(5)
False
>>> is_float("5")
False
>>> is_float("+5.4")
True
ast là gì
2- Nếu bạn tự tin rằng nội dung biến là String :
sử dụng phương thức str.itorigit ()
>>> 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
3-Đầu vào số:
phát hiện giá trị int:
>>> isinstance("54", int)
False
>>> isinstance(54, int)
True
>>>
phát hiện float:
>>> isinstance("45.1", float)
False
>>> isinstance(45.1, float)
True