表示数值的字符串【Python】
表示数值的字符串
http://www.nowcoder.com/questionTerminal/e69148f8528c4039ad89bb2546fd4ff8
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param str string字符串 # @return bool布尔型 #
class Solution: def isNumeric(self , str ): # write code here # 5e2表示5x10的2次方. # 条件一:e/E后面必须有数,且必须是整数 # 条件二:小数点只能有一个 # 条件三:其他字母(除了e/E)均无意义 # 条件四:符号位最多为两个(e前e后) point = 0 # 记录小数点个数 sign = 0 # 记录符号位个数 length = len(str) index = 0 num_list = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] while index < length: # 符号(符号必须在开头或者e的下一位) if (str[index]=="+" or str[index]=="-") and (index==0 or str[index-1]=="e" or str[index-1]=="E"): if sign == 1: print("符号问题错误") print(index) return False else: sign = sign + 1 index= index + 1 # 小数点 elif str[index]==".": if point == 1: print("小数点问题错误") return False else: point = point + 1 index = index + 1 # 数字 elif str[index]in num_list: index = index + 1 # e/E elif str[index]=="e" or str[index]=="E": # e/E后面展开新的一轮,直到str判别到末尾 index = index + 1 print("进入内部while") # e/E为最后一位(e/E后面没有整数) if index==length: print("e后无整数问题错误") return False sign = 0 # 符号位归零(e后面可以有一个符号) while index < length: if str[index]==".": print("e后有小数点问题错误") return False elif str[index]=="e" or str[index]=="E": print("有多个e问题错误") return False elif str[index]=="+" or str[index]=="-": if sign == 1: print("e后有多个符号问题错误") return False else: sign = sign + 1 index= index + 1 elif str[index]in num_list: index = index + 1 else: return False print("内部while允许完毕") return True # 不合法情况(其他字母/其他符号) else: print("不合法问题错误") return False return True