Python이 문자열이 정수인지 확인하는 방법: 먼저 문자열의 첫 번째 문자를 기준으로 정수의 부호를 확인한 다음 문자열을 오른쪽에서 왼쪽으로 탐색할 수 있습니다(예: 111). [11*10+1 ], 11은 [1*10+1]로 볼 수 있습니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, Python 버전 3.9, DELL G3 컴퓨터.
문자열이 정수인지 확인하는 Python의 방법:
방법 1: 재귀적 방법
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))
방법 2: 비재귀적 방법
먼저 다음을 통해 정수의 부호를 결정합니다. 문자의 값을 확인한 후 부호 비트를 제거하고 다음 문자를 바꿉니다. 문자열은 양수로 처리되며, 처리가 완료된 후 의미에 따라 올바른 결과가 반환됩니다. 구현 방법은 문자열을 왼쪽에서 오른쪽으로 순회하여 정수 값을 계산하는 것입니다. 예를 들어 "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 비디오 튜토리얼
위 내용은 파이썬에서 문자열이 정수인지 확인하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!