[Python] IndentationError & AttributeError 해결 과정 정리 (들여쓰기와 append 오류)

2026. 2. 26. 10:52·Error

(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 = ""
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
'Error' 카테고리의 다른 글
  • [SQL] Unkown column
  • [Git] main에 push실패 | error: failed to push some refs to 'repo 주소'
byhy0
byhy0
byhy0 님의 블로그 입니다.
  • byhy0
    byhy0 님의 블로그
    byhy0
  • 전체
    오늘
    어제
    • 분류 전체보기 (62)
      • T아카데미 (4)
      • Project (2)
      • Airflow (4)
      • Python (16)
        • Django (0)
      • Java (1)
      • Spring (4)
        • Board Project (3)
      • SQL (3)
      • Docker (1)
      • 클라우드 (2)
      • Error (3)
      • Git (5)
      • 코딩테스트 (12)
        • SQL (5)
        • Python (7)
      • TIL (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    오블완
    API 요청 #API
    T아카데미 #2주차 회고 #데이터 엔지니어 2기
    T아카데미#SK플래닛#데이터엔지니어2기
    venv #파이썬 가상환경 #가상환경
    T아카데미 #SK플래닛 #회고 #1주차
    Spring
    T아카데미 #면접 #데이터 엔지니어 #K-Digital Traning
    programmers # 코딩테스트 #sql
    #Python #정규표현식 #Regex #웹크롤링 #데이터처리
    vscode #git #git연동법
    push #pull #git연동
    게시판
    Git #설치법
    programmers #SQL #코딩테스트
    git #github #repository 생성
    티스토리챌린지
    #클라우드 #클라우드컴퓨팅 #CloudComputing #온프레미스 #CS기초 #IT인프라 #서버
    python #pytest #테스트
    BigQuery #SQL
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
byhy0
[Python] IndentationError & AttributeError 해결 과정 정리 (들여쓰기와 append 오류)
상단으로

티스토리툴바