소연의_개발일지

 

파이썬 300제 문제 풀다가 

TypeError: 'NoneType' object is not iterable

이런 오류가 났다.

 

문제:

 

리스트에는 네 개의 문자열이 바인딩돼 있다.

리스트 = ["가", "나", "다", "라"]

for문을 사용해서 다음과 같이 출력하라.

라
다
나
가

내가 접근한 코드

리스트 = ["가", "나", "다", "라"]
for i in 리스트.reverse():
    print(i)

이렇게 하니까 TypeError: 'NoneType' object is not iterable 오류가 떴다.

 

오류 설명:

TypeError: 'NoneType' object is not iterable 오류는 None 타입의 객체는 반복 가능한 객체가 아니라는 것을 의미한다.

이 오류는 일반적으로 for 루프map() 함수와 같은 반복 가능한 객체를 사용하는 곳에서 발생한다.

 

이 오류가 발생하는 이유는 일반적으로 함수나 메서드에서 아무것도 반환하지 않았거나 변수에 할당되지 않은 경우이다. 반환 값이 없는 함수나 메서드를 호출하면 기본적으로 None 값을 반환한다. 따라서 이러한 경우 None 타입의 객체가 생성되고, 이 객체는 반복 가능한 객체가 아니므로 오류가 발생한다.


해결 방법:

해결 방법은 함수나 메서드가 반환하는 값을 변수에 할당하거나, 반환 값을 확인한 후 적절한 조치를 취하는 것이다.

또는 반복 가능한 객체를 사용하기 전에 해당 객체가 None 타입인지 확인해 봐야 한다.

 

reverse() 메서드

리스트를 뒤집을 때는 reverse() 메서드를 사용한다.

그러나 reverse() 메서드는 리스트를 뒤집는 것 외에 아무것도 반환하지 않고, 리스트 자체를 변경한다.

그래서 for i in 리스트.reverse(): 이런 식으로 작성하면 reverse() 메서드가 리스트를 뒤집고, for 문에서는 아무것도 반환받지 못해서 실행되지 않는다.

따라서 리스트를 뒤집은 후에 for 문을 사용해야 한다.

아래는 reverse() 메서드와 for 문을 사용한 코드입니다.

리스트 = ["가", "나", "다", "라"]
리스트.reverse()
for i in 리스트:
    print(i)

실행 결과: 라 다 나 가

profile

소연의_개발일지

@ssoyxon

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!