基于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-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對應(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ù)號或者數(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對應(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"))

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
keras訓(xùn)練淺層卷積網(wǎng)絡(luò)并保存和加載模型實(shí)例
這篇文章主要介紹了keras訓(xùn)練淺層卷積網(wǎng)絡(luò)并保存和加載模型實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
Pandas數(shù)據(jù)清洗和預(yù)處理的實(shí)現(xiàn)示例
本文主要介紹了Pandas數(shù)據(jù)清洗和預(yù)處理的實(shí)現(xiàn)示例,包括處理缺失值、異常值,進(jìn)行數(shù)據(jù)轉(zhuǎn)換和規(guī)范化,以及處理重復(fù)數(shù)據(jù)等操作,感興趣的可以了解一下2024-01-01
Pytorch平均池化nn.AvgPool2d()使用方法實(shí)例
平均池化層,又叫平均匯聚層,下面這篇文章主要給大家介紹了關(guān)于Pytorch平均池化nn.AvgPool2d()使用方法的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02
django 將自帶的數(shù)據(jù)庫sqlite3改成mysql實(shí)例
這篇文章主要介紹了django 將自帶的數(shù)據(jù)庫sqlite3改成mysql實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
python pandas時(shí)序處理相關(guān)功能詳解
這篇文章主要介紹了python pandas時(shí)序處理相關(guān)功能詳解的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
Python深度學(xué)習(xí)之實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)
今天帶大家學(xué)習(xí)如何使用Python實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò),這是個(gè)很難的知識點(diǎn),文中有非常詳細(xì)的介紹,對小伙伴們很有幫助,需要的朋友可以參考下2021-06-06
PyCharm打代碼時(shí)出現(xiàn)白色光標(biāo)問題(筆記本的解決方案)
PyCharm中白色光標(biāo)通常是虛擬空格功能導(dǎo)致的,可以通過按下Insert鍵或在設(shè)置中取消勾選“Show virtual space at line end”選項(xiàng)來解決2025-02-02

