算法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\"))
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自学编程网。