2017-09-22 21 views
0

정말 간단한 함수를 작성하려고합니다. 지정된 객체가 숫자 (0-9)이면 True를 반환하고, 그렇지 않으면 False를 반환합니다. 다음은 입력 및 원하는 출력의 예입니다.공백 문자와 int (str)을 포함하는 python-str

is_digit("") => False 
is_digit("7") => True 
is_digit(" ") => False 
is_digit("a") => False 
is_digit("a5") => False 

위 코드는 내 코드에서 작동합니다.

def is_digit(n): 
    try: 
     return int(n) in range(0, 10) 
    except: 
     return False 

문제는 False를 반환해야 할 때 기능은 n = "1\n"에 대한 True를 반환한다. 따라서 "1"과 같은 문자열은 정수로 변환되어야하며 숫자이지만 "1 \ n"과 같은 문자열은 없어야합니다. 그러나 그 문제를 해결하는 방법을 모르겠습니다. 문자열 리터럴을 어떻게 설명 할 수 있습니까?

P. 내 제목이 불충분하다면 이름 바꾸기에 대한 조언을 환영합니다.

+6

음 ... 당신은'str.isdigit'를 재발견하려고? – deceze

+0

농담 해 : –

+0

고마워, 지금 내 질문을 삭제합니다 ... 편집 : 실제로, 호기심에, 거기에 공백 문자가 문자열에 들어 있는지 확인할 수있는 방법이 있습니까? –

답변

2

사용자 정의 함수를 정의 할 필요가 없습니다. 이에 대한 기본 제공 함수는 isdigit()입니다.

"a5".isdigit() 또는 "1/n".isdigit()으로 사용할 수 있습니다. 두 경우 모두 False를 반환합니다.

+0

''123 ".isdigit()'도'True'를 반환합니다. 나는 이것이 OP가 원하는 행동이라고 생각하지 않는다. OP의 코드와 같은 동작을 얻으려면'n.isdigit() and len (n) == 1'을해야합니다. –

+0

오! 너는 얼마나 지능이 있니? –

1

먼저 문자열을 문자열로 변환해야하며 isdigit을 적용 할 수 있습니다. 번호에 isdigit을 직접 적용 할 수 없습니다. 오류가 발생합니다

AttributeError: 'int' object has no attribute 'isdigit'

문자열에 숫자를 입력해야합니다. 예 :

In [3]: str(0).isdigit() 
Out[3]: True 

또는

In [1]: "0".isdigit() 
Out[1]: True