Python/Debugging

TypeError: argument of type 'int' is not iterable 원인, 해결법

jimmy_AI 2022. 9. 22. 00:33
반응형

개요

숫자 5가 주어진 정수 내에 포함되어 있는지 판단하기 위하여

아래와 같은 조건문을 작성했다고 가정해보도록 하겠습니다.

a = 135

if 5 in a:
    print('5가 포함되어 있습니다.')

# 결과
TypeError: argument of type 'int' is not iterable

 

 

원인

인덱싱이 가능한 리스트, 문자열 등 자료형이나 원소를 순회할 수 있는

generator 자료형과 같은 경우는 in 구문으로 원소 포함 여부를 체크할 수 있지만,

 

정수, 실수 등과 같은 자료형은 순회하면서 "2번째로 오는 값이 무엇인가?" 등을 정의할 수 있는

자료형이 아니기에 in 구문으로 원소 포함 여부를 체크할 수 없어서 나타나는 오류입니다.

 

 

해결법

포함 여부를 in 구문으로 찾고 싶다면 문자열 등 순회할 수 있는 자료형으로 변환해주신 뒤,

변환된 값에 대하여 포함 여부를 체크해주시면 됩니다.

 

예시로, 위 코드를 아래처럼 바꾸면 에러를 해결할 수 있습니다.

a = 135

if '5' in str(a): # 문자열 등 iterable한 자료형으로 변환 후에 검사
    print('5가 포함되어 있습니다.')
    
# 결과
5가 포함되어 있습니다.