溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

怎么在python中判斷字符串是否為整數(shù)

發(fā)布時(shí)間:2021-03-16 16:39:10 來(lái)源:億速云 閱讀:786 作者:Leah 欄目:編程語(yǔ)言

怎么在python中判斷字符串是否為整數(shù)?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

操作環(huán)境:windows7系統(tǒng)、python3.9版,DELL G3電腦。

python判斷字符串是否為整數(shù)的方法:

方法一:遞歸法

對(duì)于整數(shù)而言,例如111,可以看成11*10+1,而11又可以看成1*10+1。而-111可以看成(-11)*10-1,-11可以看成(-1)*10-1.根據(jù)這個(gè)特點(diǎn)可以采用遞歸的方法求解,可以先根據(jù)字符串的第一個(gè)字符確定整數(shù)的正負(fù),接著對(duì)字符串從右向左遍歷.

class Test:
    def __init__(self):
        self.flag = None
 
    def getFlag(self):
        return self.flag
 
    # 判斷c是否是數(shù)字,如果是返回?cái)?shù)字,且設(shè)置flag=True,否則返回False
    def isNumber(self, c):
        return c >= '0' and c <= '9'
 
    # 判斷str是否是數(shù)字
    def strtoint(self, strs, length):
        if length > 1:
            if not self.isNumber(list(strs)[length - 1]):
                # 不是數(shù)字
                print("不是數(shù)字")
                self.flag = False
                return -1
 
            if list(strs)[0] == '-':
                return self.strtoint(strs, length - 1) * 10 - (ord(list[length - 1]) - ord('0'))
            else:
                return self.strtoint(strs, length - 1) * 10 + ord(list(strs)[length - 1]) - ord('0')
 
        else:
            if list(strs)[0] == '-':
                return 0
            else:
                if not self.isNumber(list(strs)[0]):
                    print("不是數(shù)字")
                    self.flag = False
                    return -1
                return ord(list(strs)[0]) - ord('0')
 
    def strToint(self, s):
        self.flag = True
        if s == None or len(s) <= 0 or (list(s)[0] == '-' and len(s) == 1):
            print("不是數(shù)字")
            self.flag = False
            return -1
 
        if list(s)[0] == '+':
            return self.strToint(s[1:len(s)], len(s) - 1)
        else:
            return self.strToint(s, len(s))

方法二:非遞歸法

首先通過(guò)一個(gè)字符的值確定整數(shù)的正負(fù)性,然后去掉符號(hào)位,把后面的字符串當(dāng)做正數(shù)來(lái)處理,處理完成后再根據(jù)正負(fù)性返回正確的結(jié)果。實(shí)現(xiàn)方法為從左向右遍歷字符串計(jì)算整數(shù)的值,以“123”為例,遍歷到'2'的時(shí)候結(jié)果為1*10+2=12,遍歷到‘3’的時(shí)候結(jié)果為12*10+3=123。

class Test:
    def __init__(self):
        self.flag = None
 
    def getFlag(self):
        return self.flag
 
    # 判斷c是否是數(shù)字,如果是返回True,否則返回False
    def isNumber(self, c):
        return c >= "0" and c <= "9"
 
    def strToint(self, strs):
        if strs == None:
            self.flag = False
            print("不是數(shù)字")
            return -1
        self.flag = True
 
        res = 0
        i = 0
        minus = False  # 是否是負(fù)數(shù)
 
        if list(strs)[i] == '-':  # 結(jié)果是負(fù)數(shù)
            minus = True
            i += 1
 
        if list(strs)[i] == '+':  # 結(jié)果是正數(shù)
            i += 1
        while i < len(strs):
            if self.isNumber(list(strs)[i]):
                res = res * 10 + ord(list(strs)[i]) - ord('0')
            else:
                self.flag = False
                print("不是數(shù)字")
                return -1 
            i += 1
        return -res if minus else res
 
 
if __name__ == "__main__":
    t = Test()
    s = "-543"
    print(t.strToint(s))
    s = "543"
    print(t.strToint(s))
    s = "+543"
    print(t.strToint(s))
    s = "++43"
    result = t.strToint(s)
    if t.getFlag():
        print(result)


關(guān)于怎么在python中判斷字符串是否為整數(shù)問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI