python判断一个数是整数还是小数_Python

Python 判断是否为整数

Python 有默认的整数判断函数str.isdigit(),但其无法判断负整数,因此需要先把负整数转化为无符号的整数

代码示例:

@classmethod

def is_number(cls, numStr):

''' 字符串是否是整数

'''

flag = False

numStr = str(numStr).strip().lstrip('-').lstrip('+') # 去除正数(+)、负数(-)符号

if str(numStr).isdigit():

flag = True

return flag

补充知识:

str为字符串

str.isalnum() 所有字符都是数字或者字母

str.isalpha() 所有字符都是字母

str.isdigit() 所有字符都是数字(不能判断正数(+)、负数(-)符号)

str.islower() 所有字符都是小写

str.isupper() 所有字符都是大写

str.istitle() 所有单词都是首字母大写

str.isspace() 所有字符都是空白字符、\t、\n、\r

Python 判断是否为小数

Python 判断小数至少有三种方法,分别如下

方法1:正则匹配 re

@classmethod

def is_float(cls, numStr):

''' 字符串是否是浮点数(整数不算小数)

'''

flag = False

numStr = str(numStr).strip().lstrip('-').lstrip('+') # 去除正数(+)、负数(-)符号

try:

reg = re.compile(r'^[-+]?[0-9]+\.[0-9]+$')

res = reg.match(str(numStr))

if res:

flag = True

except Exception as ex:

print("is_float() - error: " + str(ex))

return flag

正则表达式说明:

'^[-+]?[0-9]+\.[0-9]+$'

^表示以这个字符开头,也就是以[-+]开头,[-+]表示字符-或者+

?表示0个或1个,也就是说符号+和1是可选的,也可以没有。

[0-9]表示0到9的一个数字,+表示1个或多个,也就是整数部分。

\.表示的是小数点,\是转义字符因为.是特殊符号(匹配任意单个除\r\n之外的字符),所以需要转义。

小数点后的也需要是数字,

$表示字符串以此结尾。

整个匹配中不可以出现非数字或其他符号。

方法2:浮点转化,异常判断

@classmethod

def is_float2(cls, numStr):

''' 字符串是否是浮点数(整数算小数)

'''

flag = False

numStr = str(numStr).strip().lstrip('-').lstrip('+') # 去除正数(+)、负数(-)符号

try:

numFloat = float(numStr)

flag = True

except Exception as ex:

print("is_float() - error: " + str(ex))

return flag

方法3:逐个字符判断是否为数字或小数点

@classmethod

def is_float3(cls, numStr):

''' 字符串是否是浮点数(整数算小数)

'''

flag = True

numStr = str(numStr).strip().lstrip('-').lstrip('+') # 去除正数(+)、负数(-)符号

floatNum = string.digits + "."

for i in range(len(numStr)):

if numStr[i] in floatNum:

continue

else:

flag = False

return flag

测试代码

if __name__ == '__main__':

numStr = 23

print(numStr, " : ", YGDTime.is_number(numStr), " : ", YGDTime.is_float(numStr))

numStr = '23'

print(numStr, " : ", YGDTime.is_number(numStr), " : ", YGDTime.is_float(numStr))

numStr = -23

print(numStr, " : ", YGDTime.is_number(numStr), " : ", YGDTime.is_float(numStr))

numStr = -23.123

print(numStr, " : ", YGDTime.is_number(numStr), " : ", YGDTime.is_float(numStr))

numStr = '23aw'

print(numStr, " : ", YGDTime.is_number(numStr), " : ", YGDTime.is_float(numStr))

运行结果:

(23, ' : ', True, ' : ', False)

('23', ' : ', True, ' : ', False)

(-23, ' : ', True, ' : ', False)

(-23.123, ' : ', False, ' : ', True)

('23aw', ' : ', False, ' : ', False)

参考推荐:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值