基于python實(shí)現(xiàn)判斷字符串是否數(shù)字算法
算法1
1、分小數(shù)和整數(shù):如果小數(shù)點(diǎn)個(gè)數(shù)為1,則可能是小數(shù)。如小數(shù)點(diǎn)個(gè)數(shù)為0,則可能是整數(shù)。小數(shù)點(diǎn)個(gè)數(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:#這個(gè)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、判斷'.'和'-'的個(gè)數(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:#這個(gè)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. python爬蟲實(shí)戰(zhàn)之制作屬于自己的一個(gè)IP代理模塊2. 解決ajax請求后臺,有時(shí)收不到返回值的問題3. 使用FormData進(jìn)行Ajax請求上傳文件的實(shí)例代碼4. 如何在jsp界面中插入圖片5. HTML 絕對路徑與相對路徑概念詳細(xì)6. Ajax返回值類型與用法實(shí)例分析7. Python編寫nmap掃描工具8. .NET6打包部署到Windows Service的全過程9. .Net Core和RabbitMQ限制循環(huán)消費(fèi)的方法10. 基于javaweb+jsp實(shí)現(xiàn)企業(yè)財(cái)務(wù)記賬管理系統(tǒng)
