基于python实现判断字符串是否数字算法

所属分类: 脚本专栏 / python 阅读数: 1900
收藏 0 赞 0 分享

算法1

1、分小数和整数:如果小数点个数为1,则可能是小数。如小数点个数为0,则可能是整数。小数点个数非0也非1,那么就不是数字。

2、如果是小数,再分正数和负数的情况:如果首位为负号,则可能是负小数。如果首位不为负号,则可能是正小数。

1)如果首位为负号,则去掉负号。

2)如果首位不为负号;或者是首位为负号,去掉首位负号之后。则判断是否为是否为“.”,如果是,那么就不是数字,如果不是,就去掉"."

3)再判断剩下字符是否都在"0123456789"内,如果不都在则不是数字,否则就是数字

3、如果是整数,也同样分正数和负数的情况。如果首位为负号,则可能是负整数,如果首位不为负号,则可能是正整数。

1)如果首位诶负号,则去掉负号。

2)如果首位不为负号;或者是首位为负号,去掉首位负号之后。判断剩下字符是否都在"0123456789"内,如果不都在则不是数字,否则就是数字

 #encoding=utf-8
def is_number(s):
  if s.count(".")==1:  #小数的判断
    if s[0]=="-":
      s=s[1:]
    if s[0]==".":
      return False
    s=s.replace(".","")
    for i in s:
      if i not in "0123456789":
        return False
    else:        #这个else与for对应的
      return True
  elif s.count(".")==0:  #整数的判断
    if s[0]=="-":
      s=s[1:]
    for i in s:
      if i not in "0123456789":
        return False
    else:
      return True
  else:
    return False
print(is_number("1334345345"))
print(is_number("1.12344565"))
print(is_number("-14344343"))
print(is_number("-1.123456"))
print("**********************")
print(is_number("abc"))
print(is_number("1.32.2"))
print(is_number(".2344"))
print(is_number("1234a"))
print(is_number("--1.1"))
print(is_number("--1abc"))

算法2

1、判断首位是否是负号或者数字,如果不是,则不是数字。如果是,则可能是数字。

2、判断"."和"-"的个数是否都小于等于1,如果不是,则不是数字,如果是,则可能是数字。

3、去掉"."和"-" 。

4、判断剩下的字符是否都在"0123456789"内,如果不都在则不是数字,否则就是数字

#encoding=utf-8
def is_number(s):
  if s[0]=="-" or s[0] in "0123456789":
    if s.count(".")<=1 and s.count("-")<=1:
      s=s.replace("-","").replace(".","")
      #print (s)
      for i in s:
        if i not in "0123456789":
          return False
      else:        #这个else与for对应
        return True
    else:
      return False 
  else:
    return False
print(is_number("1334345345"))
print(is_number("1.12344565"))
print(is_number("-14344343"))
print(is_number("-1.123456"))
print("**********************")
print(is_number("abc"))
print(is_number("1.32.2"))
print(is_number(".2344"))
print(is_number("1234a"))
print(is_number("--1.1"))
print(is_number("--1abc"))

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

pandas的qcut()方法详解

这篇文章主要介绍了pandas的qcut()方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

从列表或字典创建Pandas的DataFrame对象的方法

这篇文章主要介绍了从列表或字典创建Pandas的DataFrame对象的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

pandas.DataFrame的pivot()和unstack()实现行转列

这篇文章主要介绍了pandas.DataFrame的pivot()和unstack()实现行转列,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

pandas中的series数据类型详解

这篇文章主要介绍了pandas中的series数据类型详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

pandas 时间格式转换的实现

这篇文章主要介绍了pandas 时间格式转换的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

python中时间、日期、时间戳的转换的实现方法

这篇文章主要介绍了python中时间、日期、时间戳的转换的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

pandas进行时间数据的转换和计算时间差并提取年月日

这篇文章主要介绍了pandas进行时间数据的转换和计算时间差并提取年月日,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法

这篇文章主要介绍了详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

python和c语言的主要区别总结

在本篇文章里小编给各位整理了关于python和c语言的主要区别的相关知识帖内容,有需要的朋友们学习阅读下。
收藏 0 赞 0 分享

选择Python写网络爬虫的优势和理由

在本篇文章里小编给各位整理了一篇关于选择Python写网络爬虫的优势和理由以及相关代码实例,有兴趣的朋友们阅读下吧。
收藏 0 赞 0 分享
查看更多