글을 시작하며

부스트캠프에서 과제를 하면서 단순하게 isdigit 함수를 사용했는데 피어세션을 통해서 숫자 판별에도 isnumeric, isdigit, isdecimal에 차이가 있음을 알게 되어 정리를 진행하려 합니다.

 

숫자 판별

숫자 판별로는 isnumeric(), isdigit(), isdecimal() 이렇게 3가지가 존재합니다.

판별되는 기준으로는 isnumeric() >>> isdigit() >>> isdecimal() 순으로 범위가 정해집니다. 자세한 예시는 아래 코드를 통해 보여드리겠습니다.

 

일반적인 숫자 문자열을 확인해보면 3가지 함수 모두 True로 나옵니다.

만약 문자열이 다음과 같이 숫자는 숫자인데 제곱과 같은 숫자입니다.

이러한 결과가 나오는 이유는 isdigit() 함수는 단일 글자가 '숫자'모양으로 생겼으면, 숫자처럼 생긴 모든 글을 True를 반환하는 함수입니다. 위의 3²(²은 특수문자)를 int나 float를 해보면 에러가 나는 것을 볼 수 있습니다. 만약 원하는 결과가 int형이나 float형인 경우 decimal을 사용하는 것이 가장 정확합니다.

그렇다면 isnumeric과 isidigit의 차이점은 무엇일까요

아래의 결과를 보면 확인할 수 있습니다.

isdigit은 단일 글자가 숫자모양으로 생겼으면 True를 리턴하고 isnumeric은 숫자값 표현에 해당하는 텍스트까지 인정해줍니다.

 

파이썬에서 숫자로 사용하는 방식으로 e를 넣는 방식도 있습니다.

파이썬에서 e는 10으로 예를 들어 4000을 4e3으로 표현할 수 있습니다. 아래에서 확인해봅시다.

그렇다면 e를 파이썬 함수를 사용하면 나오는 결과를 확인해보겠습니다.

3함수 모두 e를 숫자로 판별하지 못하는 것을 확인할 수 있습니다.

 

마지막으로 2진수, 8진수, 16진수는 어떻게 처리될까요

파이썬에서 2진수는 0b1111과 같이 0뒤에 b를 넣어서 쓰입니다.

8진수는 0o17과 같이 0뒤에 o가. 16진수는 0x1f와 같이 0뒤에 x를 넣어서 쓰입니다.

이런 경우는 어떻게 되는지 아래에서 확인해봅시다.

이것 역시 b, o, x는 숫자모양이 아니므로 전부 False가 나옵니다.

+ Recent posts