首頁  >  文章  >  後端開發  >  python如何判斷字串是否為整數

python如何判斷字串是否為整數

coldplay.xixi
coldplay.xixi原創
2021-03-03 11:10:0612391瀏覽

python判斷字串是否為整數的方法:首先可以根據字串的第一個字元確定整數的正負;然後將字串從右向左遍歷,例如111,可以看成【11 *10 1】,而11又可以看成【1*10 1】。

python如何判斷字串是否為整數

本教學操作環境:windows7系統、python3.9版,DELL G3電腦。

python判斷字串是否為整數的方法:

#方法一:遞迴法

對整數而言,例如111,可以看成11*10 1,而11又可以看成1*10 1。而-111可以看成(-11)*10-1,-11可以看成(-1)*10-1.根據這個特點可以採用遞歸的方法求解,可以先根據字串的第一個字元確定整數的正負,接著對字串從右向左遍歷.

class Test:
    def __init__(self):
        self.flag = None
 
    def getFlag(self):
        return self.flag
 
    # 判断c是否是数字,如果是返回数字,且设置flag=True,否则返回False
    def isNumber(self, c):
        return c >= &#39;0&#39; and c <= &#39;9&#39;
 
    # 判断str是否是数字
    def strtoint(self, strs, length):
        if length > 1:
            if not self.isNumber(list(strs)[length - 1]):
                # 不是数字
                print("不是数字")
                self.flag = False
                return -1
 
            if list(strs)[0] == &#39;-&#39;:
                return self.strtoint(strs, length - 1) * 10 - (ord(list[length - 1]) - ord(&#39;0&#39;))
            else:
                return self.strtoint(strs, length - 1) * 10 + ord(list(strs)[length - 1]) - ord(&#39;0&#39;)
 
        else:
            if list(strs)[0] == &#39;-&#39;:
                return 0
            else:
                if not self.isNumber(list(strs)[0]):
                    print("不是数字")
                    self.flag = False
                    return -1
                return ord(list(strs)[0]) - ord(&#39;0&#39;)
 
    def strToint(self, s):
        self.flag = True
        if s == None or len(s) <= 0 or (list(s)[0] == &#39;-&#39; and len(s) == 1):
            print("不是数字")
            self.flag = False
            return -1
 
        if list(s)[0] == &#39;+&#39;:
            return self.strToint(s[1:len(s)], len(s) - 1)
        else:
            return self.strToint(s, len(s))

方法二:非遞歸法

首先透過一個字元的值確定整數的正負性,然後去掉符號位,把後面的字串當作正數來處理,處理完成後再根據正負性回傳正確的結果。實作方法為從左向右遍歷字串計算整數的值,以「123」為例,遍歷到'2'的時候結果為1*10 2=12,遍歷到'3'的時候結果為12*10 3=123。

class Test:
    def __init__(self):
        self.flag = None
 
    def getFlag(self):
        return self.flag
 
    # 判断c是否是数字,如果是返回True,否则返回False
    def isNumber(self, c):
        return c >= "0" and c <= "9"
 
    def strToint(self, strs):
        if strs == None:
            self.flag = False
            print("不是数字")
            return -1
        self.flag = True
 
        res = 0
        i = 0
        minus = False  # 是否是负数
 
        if list(strs)[i] == &#39;-&#39;:  # 结果是负数
            minus = True
            i += 1
 
        if list(strs)[i] == &#39;+&#39;:  # 结果是正数
            i += 1
        while i < len(strs):
            if self.isNumber(list(strs)[i]):
                res = res * 10 + ord(list(strs)[i]) - ord(&#39;0&#39;)
            else:
                self.flag = False
                print("不是数字")
                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)

相關免費學習推薦:python影片教學

以上是python如何判斷字串是否為整數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn