Python表示数值的字符串

本文阅读 1 分钟
首页 Python笔记 正文

这道题的关键也在于讨论清楚情况,把所有可能出现的情况都考虑到。需要注意的是,指数E后面必须跟一个整数,不能没有数,也不能为小数。

  1. '''
  2. 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。
  3. 例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。
  4. 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
  5. '''
  6. # -*- coding:utf-8 -*-
  7. class Solution:
  8. # s字符串
  9. def isNumeric(self, s):
  10. if s == None or len(s) <= 0:
  11. return False
  12. aList = [w.lower() for w in s]
  13. if 'e' in aList:
  14. indexE = aList.index('e')
  15. front = aList[:indexE]
  16. behind = aList[indexE+1:]
  17. if '.' in behind or len(behind) == 0:
  18. return False
  19. isFront = self.scanDigit(front)
  20. isBehind = self.scanDigit(behind)
  21. return isBehind and isFront
  22. else:
  23. isNum = self.scanDigit(aList)
  24. return isNum
  25. def scanDigit(self, alist):
  26. dotNum = 0
  27. allowVal = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '-', '.', 'e']
  28. for i in range(len(alist)):
  29. if alist[i] not in allowVal:
  30. return False
  31. if alist[i] == '.':
  32. dotNum += 1
  33. if alist[i] in '+-' and i != 0:
  34. return False
  35. if dotNum > 1:
  36. return False
  37. return True
  38. # Python trick
  39. def isNumeric2(self, s):
  40. try:
  41. float(s)
  42. if s[0:2] != '-+' and s[0:2] != '+-':
  43. return True
  44. else:
  45. return False
  46. except:
  47. return False
  48. s = Solution()
  49. print(s.isNumeric2('12a5'))
解压密码: detechn或detechn.com

免责声明

本站所有资源出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。

本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户自行鉴别,做一个有主见和判断力的用户。

本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。

Python正则表达式匹配
« 上一篇 01-21
Python字符流中第一个不重复的字符
下一篇 » 01-21

发表评论