[python] 'TypeError: cannot unpack non-iterable NoneType object' 오류

·2023년 4월 21일
0

python

목록 보기
3/5

나는 python으로 백준 문제를 풀곤 하는데, TypeError: cannot unpack non-iterable NoneType object 오류를 종종 발견해서 이번에 제대로 기억하고자 정리해본다.
확인해보니 여러 경우가 존재하는데, 우선 나는 이와 같은 형태의 코드로 인해 오류가 발생했다.


❌문제의 코드

nums = list(map(int,input().split())) #[1 2 3 4]

for num in range(len(nums)):
    a,b = func(num) #특정 함수의 리턴값
    print(a,b)

우선 nums에 저장된 값들의 수만큼 반복을 함으로써 func(num)의 값을 받아 a와 b에 각각 저장하려고 코드를 입력했다.

여기서 내가 실수한 부분은 for num in range(len(nums)) 인데, 본래 의도한 것은 nums1 2 3 4가 저장되어있으면, 이를 하나씩 꺼내 쓰면서 num=1, num=2, num=3, num=4를 차례대로 써먹으려고 입력하였다.

하지만 len(nums)로 입력하면 4번 반복하긴 하지만 nums에 저장된 값은 써먹지 못한다. 그래서 func(num)의 리턴값은 None으로 나오고 이런 None값은 a,b로 분해가능한 객체가 아니므로 결과적으로 TypeError가 발생한다.


⭕옳은 코드

for num in nums:
    a,b = func(num)
    print(a,b)

이처럼 바꿔주면 num값은 반복문에 따라 순서대로 1,2,3,4값을 이용하여 성공적으로 돌아간다.

0개의 댓글