본문 바로가기
프로그래밍언어/파이썬[Error]

[파이썬][Error] 031. TypeError - object of type 'int' has no len()

by about_IT 2025. 5. 27.
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