我需要检查字符串是否是有效数字。
以下是一些有效的例子:
1234
-1234
12.4
0.6
-0.6
-1234567890.123456789
无效:
+123
123.
.6
00.6
12-.6335
如果第一个数字是0,小数点"。"必须追随它。
我尝试了以下代码,但它说"超出时间限制"。我不确定这意味着什么。
def valid_float(number_string):
counter = 0
if number_string[0].isdigit() or number_string[0] == "-" or number_string[0] == "0":
while number_string[0] == "-":
if number_string[1].isdigit():
counter += 1
else:
counter = 0
while number_string[0].isdigit():
if number_string[1] == "." and number_string[2].isdigit():
counter += 1
else:
counter = 0
while number_string[0] == "0":
if number_string[1] == ".":
counter += 1
else:
counter = 0
if counter == 3:
return True
else:
return False
else:
counter = 0
答案 0 :(得分:0)
你得到的错误意味着程序会持续很长时间,因为它在某个地方“卡住”了。大部分时间都是因为递归函数不好,或者在这种情况下是一个永远循环的while循环。
你的while循环将永远循环,因为你没有改变它作为条件检查的东西:如果条件在开始时为真,它将一直为真,所以程序永远不会退出while循环。
我想纠正你的代码,但我无法弄清楚你在哪里尝试,所以这里有一些代码可以帮助你:
for i in range(0,len(number_string)):
if i == 0 and number_string[0] == "." :
return false
if i != 0 and number_string[0] == "." :
continue
if i == 0 and number_string[0] == "-" :
continue
if i == 0 and number_string[0] == "0" and len(number_string[0])>1:
if number_string[1] != "." :
return false
if number_string[i].isdigit():
continue
return false