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

Python 3에서 입력받은 값이 정수인지 확인하는 방법

Python 3에서 입력값이 정수인지 판별하기

사용자로부터 입력받은 값이 정수인지 확인해야 하는 경우가 자주 있습니다. 파이썬에서는 크게 두 가지 방법으로 이를 처리할 수 있는데, 바로 문자열 메서드인 isdigit()을 사용하는 방법과 정규표현식(regex)을 활용하는 방법입니다.

1. isdigit() 메서드 사용하기

문자열 클래스에는 isdigit()이라는 메서드가 있습니다. 이 메서드는 문자열의 모든 문자가 숫자이고 최소 한 개 이상의 문자가 존재할 경우 True를 반환하며, 그렇지 않으면 False를 반환합니다. 소수점을 포함한 실수를 입력하면 점(.)이 숫자가 아니기 때문에 역시 False를 반환합니다.

>>> x = input()
12345
>>> x.isdigit()
True

위 예제처럼 입력받은 문자열에 대해 간단히 x.isdigit()를 호출하는 것만으로 해당 값이 숫자로만 이루어져 있는지 손쉽게 확인할 수 있습니다.

2. 정규표현식(Regex) 사용하기

같은 결과를 얻기 위해 정규표현식을 사용할 수도 있습니다. 오직 숫자만 매칭하려면 re.match() 함수에 정규식 패턴 "^[0-9]+$"를 전달하면 됩니다. 여기서 ^는 문자열의 시작, $는 문자열의 끝을 의미하고, [0-9]+는 하나 이상의 연속된 숫자를 나타냅니다.

>>> import re
>>> x = input()
123abc
>>> bool(re.match('^[0-9]+$', x))
False

위 예제에서 입력값에 알파벳이 섞여 있기 때문에 False가 반환된 것을 볼 수 있습니다.

re.match 결과를 bool()로 변환하는 이유

re.match()는 매칭 성공 시 match 객체를, 실패 시 None을 반환합니다. 따라서 매칭 여부를 명확하게 판별하려면 결과를 bool() 함수로 변환하여 참/거짓 형태로 확인하는 것이 좋습니다.

정리

  • 간단한 숫자 판별에는 isdigit() 메서드가 가장 편리합니다.
  • 더 세밀한 패턴 제어가 필요하다면 정규표현식 re.match('^[0-9]+$', x)를 활용하세요.
  • re.match()의 반환값은 객체이므로 bool()로 변환해야 True/False로 직관적으로 확인할 수 있습니다.