如何判斷字串是否是整數 (python)

2021-09-13 13:51:05 字數 2800 閱讀 2927

題目描述:寫乙個方法,檢查字串是否為整數,那麼返回整數值。

分析與解答: 整數分為負數和非負數,負數只有一種表示方法,而非負數可以有兩種表示方法。例如111,-111,+111,因此在判斷字串是否為整數的時候,需要把這幾個問題都考慮到。下面說兩個方法,

方法一:遞迴法:對於整數而言,例如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實現

寫乙個方法,檢查字串是否是整數,如果是整數,那麼返回其整數值。整數分為負數與非負數,負數只有一種表示方法,而非負數可以有兩種表示方法。例如 123,123 123。因此在判斷字串是否為整數的時候,需要把這幾個問題都考慮到。首先通過第乙個字元的值確定整數的正負性,然後去掉符號位,把後面的字串當做正數 ...

JAVA判斷字串是否整數

1.使用型別轉換判斷 try catch exception e 2.使用正規表示式判斷 string str abc123 boolean isnum str.matches 0 9 表示1個或多個 如 3 或 225 表示0個或多個 0 9 如 或 1 或 22 表示0個或1個 0 9 如 或 ...

判斷字串是否是中文

一,判斷字元是否是中文 1 通過編碼判斷單個字元是否是中文。如下 判斷乙個字元是中文還是英文 public static bool ischinese char c 1 將字串轉換成字元陣列,遍歷字元陣列判斷每個字元是否是中文。如下 判斷字串中是否包含中文 public static bool is...