(1) 문제 상황 설명
코딩 테스트 문제를 해결 중

다음과 같은 오류가 생겼다.
IndentationError: unindent does not match any outer indentation level
해당 들여쓰기 문제를 해결 후 실행하였는데 또 다른 에러가 발생했다.
AttributeError: 'str' object has no attribute 'append'
한 문제에서 연속으로 여러개의 오류가 발생하여 당황하였지만,
하지만 이 과정 덕분에 Python의 들여쓰기 구조와 자료형 개념을 제대로 이해하게 되었다.
(2) 에러 메시지 분석
1 . 첫번째 에러
IndentationError: unindent does not match any outer indentation level
해당 오류 메세지를 해석해보면 IndentationError는 들여쓰기 부분에서 오류가 났다는 것이다.
File "/solution.py", line 15
elif code[idx] == '1':
해당 메시지로는 15번 째 줄의 들여쓰기 수준이 잘못되었다는 것을 알 수 있다.
따라서 15번 째 줄에 올라가 들여쓰기 수준을 맞춰주었다.
2. 두번째 에러

AttributeError: 'str' object has no attribute 'append'
해당 오류 메세지를 해석해보면 AttributeError는 없는 기능을 사용할 때 나오는 에러이다.
문자열은 append 기능을 사용 할 수 없는데 이를 리스트와 혼동하여 사용했기 때문이다.
즉, 문자열에 append()를 사용하려 했기 때문이다.
(3) 원인 설명
1) IndentationError 원인
Python은 중괄호 {} 대신 들여쓰기로 코드 블록을 구분한다.
문제는 내가 코드 일부에서
- 어떤 줄은 tab
- 어떤 줄은 space
를 섞어서 사용했다는 것이다.
겉으로 보기엔 같아 보이지만,
Python은 tab과 space를 다르게 인식한다.
그래서 블록 구조가 깨지면서 에러가 발생했다.
2) AttributeError 원인
나는 리스트처럼 사용하려고 아래처럼 작성했었다.
result.append("A")
하지만 result는 문자열(str)이다.
문자열에는 append() 메서드가 없다.
append()는 리스트(list) 전용 메서드다.
(4) 해결 방법
1) 들여쓰기 통일하기
- tab 대신 space 4칸으로 통일
- VSCode에서 탭을 공백으로 변환 설정
들여쓰기를 통일하니 IndentationError는 해결되었다.
2) 문자열 대신 리스트 사용
방법은 두 가지가 있다.
첫번째로는 리스트로 바꾸기이다.
result = []
result.append("A")
result.append("B")
final = "".join(result)
리스트에 append로 추가한 뒤,
마지막에 join()으로 문자열로 변환했다.
두번째로는
result = ""
result += "A"
result += "B"
문자열은 += 연산으로 이어붙일 수 있다.
(5) 배운 점 / 정리
이번 경험을 통해 느낀 점은 크게 세 가지다.
1. Python에서 들여쓰기는 문법이다
C나 Java처럼 보기 좋게 정리하는 수준이 아니라,
문법 그 자체라는 것을 다시 느꼈다.
2. 자료형을 정확히 이해하자
- append()는 리스트 전용
- 문자열은 불변(immutable) 객체
자료형을 제대로 이해하지 못하면
이런 기본적인 에러가 계속 발생한다.
3. 에러 메시지를 두려워하지 말자
처음엔 에러가 나면 당황했는데,
이제는 이렇게 생각한다.
Traceback은 항상 아래에서부터 읽기
→ 에러 위치 확인
→ 객체 타입 확인
→ 해당 타입의 메서드인지 확인
이 과정을 습관화하려고 한다.
(6) 마무리
사소한 들여쓰기 실수,
자료형 착각 하나였지만
이 과정을 통해
- Python 블록 구조
- tab vs space 차이
- 리스트와 문자열의 차이
- 에러 읽는 법
을 확실히 정리할 수 있었다.
'Error' 카테고리의 다른 글
| [SQL] Unkown column (0) | 2026.03.28 |
|---|---|
| [Git] main에 push실패 | error: failed to push some refs to 'repo 주소' (1) | 2026.03.03 |
