파이썬 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)
실행 결과: 라 다 나 가
'개발공부 > Python' 카테고리의 다른 글
[파이썬] 튜플(Tuple) (0) | 2023.04.13 |
---|---|
[파이썬] 리스트(List)_메서드, 스택, 큐, 컴프리헨션 (0) | 2023.04.13 |
파이참(Pycham) 단축키 모음 (0) | 2023.04.10 |
파이썬_개발환경 조성(파이참 설치) 및 hello world 출력해보기 (0) | 2023.04.10 |
[점프 투 파이썬] 예제풀기_146p (0) | 2023.04.10 |