python判斷字符串是否是數字的算法


判斷字符串是否是數字(包含負數和小數)

算法1:

1、分小數和整數:如果小數點個數為1,則可能是小數。如小數點個數為0,則可能是整數。小數點個數非0也非1,那么就不是數字。

2、如果是小數,再分正數和負數的情況:如果首位為負號,則可能是負小數。如果首位不為負號,則可能是正小數。

  1)如果首位為負號,則去掉負號。

  2)如果首位不為負號;或者是首位為負號,去掉首位負號之后。則判斷是否為是否為“.”,如果是,那么就不是數字,如果不是,就去掉"."

  3)再判斷剩下字符是否都在"0123456789"內,如果不都在則不是數字,否則就是數字

3、如果是整數,也同樣分正數和負數的情況。如果首位為負號,則可能是負整數,如果首位不為負號,則可能是正整數。

 1)如果首位誒負號,則去掉負號。

 2)如果首位不為負號;或者是首位為負號,去掉首位負號之后。判斷剩下字符是否都在"0123456789"內,如果不都在則不是數字,否則就是數字

 

 

 #encoding=utf-8

def 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 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、判斷首位是否是負號或者數字,如果不是,則不是數字。如果是,則可能是數字。

2、判斷"."和"-"的個數是否都小於等於1,如果不是,則不是數字,如果是,則可能是數字。

3、去掉"."和"-" 。

4、判斷剩下的字符是否都在"0123456789"內,如果不都在則不是數字,否則就是數字

 

#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:               #這個else與for對應

                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"))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM