基于python實現判斷字符串是否數字算法
算法1
1、分小數和整數:如果小數點個數為1,則可能是小數。如小數點個數為0,則可能是整數。小數點個數非0也非1,那么就不是數字。
2、如果是小數,再分正數和負數的情況:如果首位為負號,則可能是負小數。如果首位不為負號,則可能是正小數。
1)如果首位為負號,則去掉負號。
2)如果首位不為負號;或者是首位為負號,去掉首位負號之后。則判斷是否為是否為“.”,如果是,那么就不是數字,如果不是,就去掉'.'
3)再判斷剩下字符是否都在'0123456789'內,如果不都在則不是數字,否則就是數字
3、如果是整數,也同樣分正數和負數的情況。如果首位為負號,則可能是負整數,如果首位不為負號,則可能是正整數。
1)如果首位誒負號,則去掉負號。
2)如果首位不為負號;或者是首位為負號,去掉首位負號之后。判斷剩下字符是否都在'0123456789'內,如果不都在則不是數字,否則就是數字
#encoding=utf-8def 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 Falseprint(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-8def 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 Falseprint(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'))
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。
相關文章: