Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python으로 isNumber() 함수 구현하기: try-except 예외 처리 완벽 가이드

이 글에서는 Python 3.x(및 그 이전 버전)에서 isNumber() 함수를 직접 구현하는 방법을 알아보겠습니다.

isNumber() 함수란?

isNumber() 함수는 문자열을 입력받아, 해당 문자열이 숫자인지 아닌지에 따라 불리언 값 True 또는 False를 반환하는 함수입니다.

구현의 핵심은 예외 처리(Exception Handling)입니다. Python의 tryexcept 문을 활용하면, 문자열을 정수로 변환하는 과정에서 발생할 수 있는 오류를 안전하게 처리할 수 있습니다.

구현 원리

동작 과정은 다음과 같습니다.

1. 입력 문자열이 음수 기호('-')로 시작하면, 기호를 제거한 나머지 부분만 검사합니다.
2. try 블록에서 int() 함수로 문자열을 정수로 변환을 시도합니다.
3. 변환이 성공하면 숫자이므로 True를 반환합니다.
4. 변환 중 ValueError가 발생하면 숫자가 아니므로 False를 반환합니다.

코드 예제

# isNumber() 함수 구현
def isNumber(s):
    if(s[0] == '-'):
        s = s[1:]
    # 예외 처리
    try:
        n = int(s)
        return True
    # 오류가 발생하면 예외를 잡아 처리
    except ValueError:
        return False

inp1 = "786"
inp2 = "-786"
inp3 = "Tutorialspoint"
print(isNumber(inp1))
print(isNumber(inp2))
print(isNumber(inp3))

실행 결과

True
True
False

위 결과에서 볼 수 있듯이, 양수 "786"과 음수 "-786"은 모두 숫자로 인식되어 True가 출력되고, 일반 문자열인 "Tutorialspoint"는 False가 출력됩니다.

소수점 숫자까지 검사하려면?

위 구현은 정수만 판별할 수 있습니다. 만약 소수점이 포함된 실수(예: "3.14")까지 검사하고 싶다면, int() 대신 float() 함수를 사용하면 됩니다.

def isNumberFloat(s):
    try:
        n = float(s)
        return True
    except ValueError:
        return False

print(isNumberFloat("3.14"))   # True
print(isNumberFloat("abc"))    # False

마무리

이번 글에서는 Python의 try-except 예외 처리를 활용해 isNumber() 함수를 구현하는 방법을 배웠습니다. 이 접근 방식은 별도의 복잡한 정규식 없이도 간결하고 안정적으로 문자열의 숫자 여부를 판별할 수 있는 실용적인 기법이므로, 입력값 검증 등 다양한 상황에서 유용하게 활용할 수 있습니다.