''' 题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。 例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。 ''' # -*- coding:utf-8 -*- class Solution: # s字符串 def isNumeric(self, s): num = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'] valid_all = num+['+', '-', 'e', 'E','.'] # print(valid_all) # write code here def is_int(sub_s): if len(sub_s)==0: return False # 判断子字符串是否是整数(包括正整数和负整数,以及不具有符号标识的整数) if sub_s[0]=='+' or sub_s[0]=='-': sub_s=sub_s[1:] for elem in sub_s: if elem not in num: return False return True def is_float(sub_s): if len(sub_s)==0: return False #小数点之前的子字符串需要判断是否是整数 #小数点之后的子字符串需要判断是否是不带有符号的整数 if len(sub_s.split('.'))!=2: return False before,after=sub_s.split('.') before_logtic=is_int(before) if not before_logtic: return False for s in after: if s not in num: return False return True for c in s: # print(valid_all) if c not in valid_all: return False if 'e' in s or 'E' in s: out=s.split('e') if 'e' in s else s.split('E') if len(out)!=2: return False else: before, after=out[0],out[1] logtic=(is_float(before) or is_int(before)) and is_int(after) return logtic elif '.' in s: return is_float(s) else: return is_int(s) if __name__=='__main__': for s in ["+100","5e2","-123","3.1416","-1E-16"]: print(Solution().isNumeric(s))
python 表示数值的字符串
猜你喜欢
转载自blog.csdn.net/WYXHAHAHA123/article/details/89302502
今日推荐
周排行