본문 바로가기

프로그래밍 언어/python

python 에러 모음

하도 별의별 에러를 만들길래 이참에 모아보는 에러들..

 

1. SyntaxError: invalid syntax

- 원인: 파이썬에선 사용하지 않는 문법 사용함

- 해결법: 오류난 문법 위치를 찾아 수정

- 내 경우 에러났던 원인들

   * if문에서 : 빼먹음

   * 오류난 바로 앞부분에서 () 개수 잘못 맞춤

 

2. ValueError: not enough values to unpack (expected 2, got 1)

- 원인 : 패킹된 변수의 수와 언패킹할 변수의 수가 같지않을 때 발생

  * 패킹 : 변수하나에 여러개의 값을 담는 것

  * 언패킹 : 패킹된 변수안의 값을 여러개의 변수로 나누는 것

- 해결법:  변수와 값의 개수를 동일하게 맞춰줘야 함

- 내 경우 에러났던 원인들: 입력으로 받는 input이 띄어쓰기가 안되었음(ex. a 1 이 아니라 a1으로 들어옴). 이런 경우 input.split()으로 받지 말고 input()으로 받은 후(str로 받음), 각각 data[0], data[1]의 방식으로 변수 나누기

 

 

3. TypeError: 'int' object does not support item assignment

- 원인 : ‘int’ 유형 객체의 항목에 다른 값을 대입할 수 없을 때 발생. 파이썬에서 string 타입은 immutable (변경 불가능)

 

 

4. TypeError: 'list' object cannot be interpreted as an integer

- 내 경우 에러났던 원인들: 2차원 배열에서의 최소값을 받고 싶었는데, min_value = min(board)와 같은 형식으로 받아서 min_value에 int형이 아니라 배열값이 들어갔었다. 그래서 이후에 min_value 사용 시 에러 났음 

 

5. 0 나누기 에러

- 원인: 0이 있는 변수로 나눗셈을 실행

- 해결법: 변수값 범위를 1~로 수정

- 내 경우 에러났던 원인들: 이분탐색할 때 min값 범위를 0부터 시작햇었음

 

6.IndentationError: unindent does not match any outer indentation level

 - 원인 : 들여쓰기 오류 

 - 해결법 : 들여쓰기 및 띄어쓰기 확인 잘 하기..

 

7. TypeError: 'map' object is not subscriptable

- 원인: map 객체는 원소를 하나씩 반환할 수는 있지만 [] 연산자를 쓸 수 없는데(슬라이스도 사용 못함) map객체를 index로 접근했을 때 발생

- 해결법: map객체를 index로 접근하지 않거나, index로 접근하고싶은 객체를 list로 변경

- 내 경우 에러났던 원인들: 2차원 배열 입력받을 때 board[i] = map(int, input().split())으로 써서 board를 map 객체로 만들어부럿다. 이걸 list()로 감싸면 됨

 

8. SyntaxError: EOL while scanning string literal

- 원인:  따옴표 혹은 괄호 여닫기를 제대로 여닫지 않았을 때 발생

- 해결 방법: 따옴표의 개수 확인 

- 내 경우 에러났던 원인들: 주석처리를 잘못함( " " 으로 주석처리 했었음)

 

9. TypeError: 'int' object is not iterable

- 원인 : list의 인자는 iterablae(반복가능한) 개체가 들어와야 하는데, 반복을 돌릴 수 없는 int 형을 변수로 사용 

- 해결법 : list의 인자로 시퀀스(문자열, 튜플), 집합(딕셔너리) 등을 넣어야 함. (반복문에 사용되는 변수가 정수라면 바꾸기)

- 내 경우 에러났던 원인들: 1차원 배열의 max값을 구해야 하는데, 2차원 배열인 줄 알고 2차원 배열에서의 max값 구하는 방식을 사용함

                                    for문에서 range()안씀

 

 

10.TypeError: string indices must be integers

- 원인 : 문자열의 인덱스 값이 정수가 아님

- 해결법: 문자열의 인덱스 변수를 확인하고 int()형으로 변환

- 내 경우 에러났던 원인들: 슬라이싱할 때 : 말고 , 를 썼었음. ex) array[1,3]

 

11.AttributeError: 'str' object has no attribute 'sort'

- 원인 : list의 인덱스 값이 정수가 아님

- 해결법: list의 인덱스 변수를 확인하고 int()형으로 변환

- 내 경우 에러났던 원인들: 

 

12.TypeError: 'int' object is not callable

- 원인 : 예약어를 변수명으로 사용 하였기 때문 (sum(), min(), max())

- 해결법: 해당 변수 이름을 바꾸거나 삭제

- 내 경우 에러났던 원인들: 변수 명으로 min, max를 씀 

 

13.UnboundLocalError: local variable 'answer' referenced before assignment

- 원인 : 함수 밖에 있는 전역변수를 함수 안에서 사용하려 할 때 발생 //  https://sikaleo.tistory.com/99, https://www.delftstack.com/ko/howto/python/python-local-variable-referenced-before-assignment/

- 해결법: 전역 변수를 지역 범위 (local scope)에서 사용하고 싶으시면 지역 영역에서 global 표현을 사용

- 내 경우 에러났던 원인들: 전역 변수로 사용하고 싶은 대상에 global 안썼음 

 

14. AttributeError: 'list' object has no attribute 'split'

- 원인 : 말그대로 list의 각 값들을 또 split하려 할 때 발생

- 해결법: list.split(" ")말고 list[i]로 접근하기

 

15. unexpected EOF while parsing

- 원인: 구문이 올바르지 않을때

- print()하는 구문이 올바른지 확인, 괄호 개수 맞는지 확인

- 내 경우 에러났던 원인들: 괄호 개수 안맞았음

 

16. TypeError: 'str' object does not support item assignment

- 원인: 문자열의 특정 인덱스의 원소에 대해 값 수정 혹은 삭제 연산을 못함

- 해결법: str,tuple은 한번 입력받은 이후엔 수정이 불가능한 한  immutable 타입 이므로, 새로운 문자열 객체를 만들어서 교환/삭제해야 함

- 내 경우 에러났던 원인들 : arr[i][j], arr[nx][ny] = arr[nx][ny],arr[i][j] 처럼 str문자열을 수정하려 했음

 

17. TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'

- 원인: 파이썬의 기본연산이 불가능한 타입끼리 연산을 하려고 할 때 발생

- 해결법: 기본연산이 가능한 대상들로 형변환 

- 내 경우 에러났던 원인들 : 더하려는 두 변수 중 하나가 int형이 아니었음 

 

18. TypeError: 'type' object is not subscriptable

- 원인: 

- 해결법: 

- 내 경우 에러났던 원인들 : 딕셔너리를 배열 형태로 접근할 때(dict[key] ) 딕셔너리 명을 잘못적음 

 

'프로그래밍 언어 > python' 카테고리의 다른 글

정렬  (0) 2021.08.01
수학  (0) 2021.07.29
python 기초 - 구현  (0) 2021.07.24
python 기초 - 배열1  (0) 2021.07.23
중복 제거  (0) 2021.07.22