728x90
TypeError: object of type 'int' has no len()
오류는 정수형(int
) 데이터에 len()
함수를 사용했을 때 발생합니다. 파이썬에서 len()
함수는 리스트, 문자열, 튜플, 딕셔너리 등 길이나 크기를 측정할 수 있는 시퀀스나 컬렉션 타입에만 사용할 수 있습니다.
정수형은 개별 요소로 구성된 시퀀스가 아니기 때문에 len()
을 적용할 수 없으며, 길이 개념이 존재하지 않는 객체에 len()
을 호출할 경우 이 오류가 발생합니다.
● 오류 발생 예시
number = 1234
print(len(number))
이 코드는 number
가 정수형이기 때문에 len()
을 사용할 수 없어 오류가 발생합니다.
TypeError: object of type 'int' has no len()
● 해결 방법
- 정수의 자릿수를 구하고자 한다면
str()
로 문자열로 변환 후len()
사용 - 정수 값 자체의 크기를 알고자 한다면
bit_length()
,math.log10()
등을 활용
● 올바른 코드 예시
number = 1234
print(len(str(number))) # 결과: 4
정수를 문자열로 변환하면 각 자릿수를 문자열로 취급할 수 있으므로 len()
사용이 가능합니다.
● 자주 하는 실수
- 정수를 리스트나 문자열과 동일하게 다루려고 시도
- 입력값을 문자열로 받아놓고
int()
로 변환 후len()
을 사용 - 딕셔너리의 값이 정수일 때
len(d[key])
를 실수로 사용
● 디버깅 팁
type()
함수로len()
을 적용하기 전에 객체의 타입 확인- 정수인 경우에는
len()
이 아닌 다른 방식으로 원하는 정보를 계산
● 결론
TypeError - object of type 'int' has no len()
오류는 len()
함수가 지원하지 않는 객체에 사용되었을 때 발생합니다. 특히 정수형 데이터는 시퀀스가 아니므로 len()
을 적용할 수 없으며, 자릿수 계산 시에는 문자열로 변환하는 등의 우회 방법을 사용해야 합니다.
728x90