基于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ù)號(hào),則可能是負(fù)小數(shù)。如果首位不為負(fù)號(hào),則可能是正小數(shù)。
1)如果首位為負(fù)號(hào),則去掉負(fù)號(hào)。
2)如果首位不為負(fù)號(hào);或者是首位為負(fù)號(hào),去掉首位負(fù)號(hào)之后。則判斷是否為是否為“.”,如果是,那么就不是數(shù)字,如果不是,就去掉"."
3)再判斷剩下字符是否都在"0123456789"內(nèi),如果不都在則不是數(shù)字,否則就是數(shù)字
3、如果是整數(shù),也同樣分正數(shù)和負(fù)數(shù)的情況。如果首位為負(fù)號(hào),則可能是負(fù)整數(shù),如果首位不為負(fù)號(hào),則可能是正整數(shù)。
1)如果首位誒負(fù)號(hào),則去掉負(fù)號(hào)。
2)如果首位不為負(fù)號(hào);或者是首位為負(fù)號(hào),去掉首位負(fù)號(hào)之后。判斷剩下字符是否都在"0123456789"內(nèi),如果不都在則不是數(shù)字,否則就是數(shù)字
#encoding=utf-8 def 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對(duì)應(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 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、判斷首位是否是負(fù)號(hào)或者數(shù)字,如果不是,則不是數(shù)字。如果是,則可能是數(shù)字。
2、判斷"."和"-"的個(gè)數(shù)是否都小于等于1,如果不是,則不是數(shù)字,如果是,則可能是數(shù)字。
3、去掉"."和"-" 。
4、判斷剩下的字符是否都在"0123456789"內(nèi),如果不都在則不是數(shù)字,否則就是數(shù)字
#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: #這個(gè)else與for對(duì)應(yīng) 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"))
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)王者榮耀自動(dòng)刷金幣的完整步驟
這篇文章主要介紹了Python實(shí)現(xiàn)王者農(nóng)藥自動(dòng)刷金幣的完整步驟,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01簡(jiǎn)單了解python高階函數(shù)map/reduce
這篇文章主要介紹了簡(jiǎn)單了解python高階函數(shù)map/reduce,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-06-06python網(wǎng)絡(luò)編程示例(客戶端與服務(wù)端)
這篇文章主要介紹了python網(wǎng)絡(luò)編程示例,提供了客戶端與服務(wù)端,需要的朋友可以參考下2014-04-04python自動(dòng)腳本的pyautogui入門學(xué)習(xí)
這篇文章主要介紹了python自動(dòng)腳本的pyautogui入門學(xué)習(xí),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04詳解Python實(shí)現(xiàn)按任意鍵繼續(xù)/退出的功能
在學(xué)Python時(shí)在總想實(shí)現(xiàn)一個(gè)按任意鍵繼續(xù)/退出的程序(受.bat毒害), 奈何一直沒有寫,今天抽時(shí)間寫出來了,下面分享給大家,有需要的可以參考借鑒。2016-08-08Python unittest單元測(cè)試框架及斷言方法
這篇文章主要介紹了Python unittest單元測(cè)試框架及斷言方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04Python 16進(jìn)制與中文相互轉(zhuǎn)換的實(shí)現(xiàn)方法
今天小編就為大家分享一篇Python 16進(jìn)制與中文相互轉(zhuǎn)換的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-07-07