출처: https://meyouus.tistory.com/64 [정보 공유 - For Me For You For Us]
본문으로 바로가기

 

문제 자체는 쉬워 보였다. 그냥 문자열이 숫자만으로 이루어져 있으면 True를 출력하고 아니라면 False를 출력하는 것이다. 따라서 처음에는 isnumeric() 함수를 썼다:

def solution(s):
    if len(s) == 4 or len(s) == 6:
        for i in range(len(s)):
            if not s[i].isnumeric():
                return False
        return True
    else:
        return False

일단 길이가 4, 6을 명시했으므로 길이가 4, 6일때랑 아닐때를 나누고, 아닐 겨우에는 Falsereturn하게끔 했다.

길이가 4, 6 일때도, 안에 있는 문자열을 확인해봐야 하는데, 안에 있는 문자열에 s[i], 즉 하나하나를 확인 했을 때, 숫자가 아닌게 나오는 순간 return False를 하게끔 했고, 다 숫자일 경우에는 return True를 하게끔 했다.

 

하지만 .isnumeric()으로 하니 문제가 생겼다. .isnumeric()의 경우에는 특수문자 "½" 와 같은 특수 문자도 숫자로 인식한다. 따라서 .isnumeric()이 아닌 .isdigit()을 사용해서 하면 된다:

def solution(s):
    if len(s) == 4 or len(s) == 6:
        for i in range(len(s)):
            if not s[i].isdigit():
                return False
        return True
    else:
        return False