python判斷字串是否為整數的方法:1、遞歸法,可以先根據字串的第一個字元確定整數的正負,接著對字串從右向左遍歷;2、非遞歸法,實作方法為從左向右遍歷字串計算整數的值。
本教學操作環境: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 >= '0' and c <= '9' # 判断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] == '-': 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("不是数字") 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("不是数字") 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))
方法二:非遞歸法
首先透過一個字元的值確定整數的正負性,然後去掉符號位,把後面的字串當作正數來處理,處理完成後再根據正負性回傳正確的結果。實作方法為從左向右遍歷字串計算整數的值,以「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] == '-': # 结果是负数 minus = True i += 1 if list(strs)[i] == '+': # 结果是正数 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("不是数字") 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中文網其他相關文章!