基于python實現(xiàn)判斷字符串是否數(shù)字算法
算法1
1、分小數(shù)和整數(shù):如果小數(shù)點個數(shù)為1,則可能是小數(shù)。如小數(shù)點個數(shù)為0,則可能是整數(shù)。小數(shù)點個數(shù)非0也非1,那么就不是數(shù)字。
2、如果是小數(shù),再分正數(shù)和負(fù)數(shù)的情況:如果首位為負(fù)號,則可能是負(fù)小數(shù)。如果首位不為負(fù)號,則可能是正小數(shù)。
1)如果首位為負(fù)號,則去掉負(fù)號。
2)如果首位不為負(fù)號;或者是首位為負(fù)號,去掉首位負(fù)號之后。則判斷是否為是否為“.”,如果是,那么就不是數(shù)字,如果不是,就去掉'.'
3)再判斷剩下字符是否都在'0123456789'內(nèi),如果不都在則不是數(shù)字,否則就是數(shù)字
3、如果是整數(shù),也同樣分正數(shù)和負(fù)數(shù)的情況。如果首位為負(fù)號,則可能是負(fù)整數(shù),如果首位不為負(fù)號,則可能是正整數(shù)。
1)如果首位誒負(fù)號,則去掉負(fù)號。
2)如果首位不為負(fù)號;或者是首位為負(fù)號,去掉首位負(fù)號之后。判斷剩下字符是否都在'0123456789'內(nèi),如果不都在則不是數(shù)字,否則就是數(shù)字
#encoding=utf-8def is_number(s): if s.count('.')==1: #小數(shù)的判斷 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對應(yīng)的 return True elif s.count('.')==0: #整數(shù)的判斷 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、判斷首位是否是負(fù)號或者數(shù)字,如果不是,則不是數(shù)字。如果是,則可能是數(shù)字。
2、判斷'.'和'-'的個數(shù)是否都小于等于1,如果不是,則不是數(shù)字,如果是,則可能是數(shù)字。
3、去掉'.'和'-' 。
4、判斷剩下的字符是否都在'0123456789'內(nèi),如果不都在則不是數(shù)字,否則就是數(shù)字
#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對應(yīng)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'))
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. XML入門的常見問題(四)2. html小技巧之td,div標(biāo)簽里內(nèi)容不換行3. ASP動態(tài)網(wǎng)頁制作技術(shù)經(jīng)驗分享4. 解決ASP中http狀態(tài)跳轉(zhuǎn)返回錯誤頁的問題5. ASP中if語句、select 、while循環(huán)的使用方法6. xml中的空格之完全解說7. 無線標(biāo)記語言(WML)基礎(chǔ)之WMLScript 基礎(chǔ)第1/2頁8. ASP中解決“對象關(guān)閉時,不允許操作。”的詭異問題……9. msxml3.dll 錯誤 800c0019 系統(tǒng)錯誤:-2146697191解決方法10. WMLScript的語法基礎(chǔ)
