>  기사  >  백엔드 개발  >  파이썬에서 문자열이 정수인지 확인하는 방법

파이썬에서 문자열이 정수인지 확인하는 방법

coldplay.xixi
coldplay.xixi원래의
2021-03-03 11:10:0612317검색

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 >= &#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))

방법 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] == &#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 비디오 튜토리얼

위 내용은 파이썬에서 문자열이 정수인지 확인하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.