시작하며
Python을 처음 배울 때 가장 당황스러운 순간은 바로 빨간 에러 메시지가 터미널을 가득 채울 때입니다. 하지만 걱정하지 마세요. 대부분의 초보자가 겪는 에러는 패턴이 정해져 있고, 해결법도 간단합니다. 이 글에서는 Python 입문자가 가장 자주 마주치는 7가지 에러와 그 해결 방법을 실전 예제와 함께 알아보겠습니다.
1. SyntaxError: 문법 오류의 기본
증상
if x > 5
print("큰 수")
SyntaxError: invalid syntax
원인과 해결
콜론(:) 누락이 가장 흔한 원인입니다. Python은 조건문, 반복문, 함수 정의 뒤에 반드시 콜론이 필요합니다.
# 올바른 코드
if x > 5:
print("큰 수")
다른 흔한 케이스
- 괄호/따옴표 미닫힘:
print("안녕하세요" - 키워드 철자 오류:
whlie대신while - 잘못된 들여쓰기 혼용 (탭과 스페이스)
2. IndentationError: 들여쓰기의 함정
증상
def greet():
print("안녕")
print("반가워")
IndentationError: expected an indented block
원인과 해결
Python은 들여쓰기로 코드 블록을 구분합니다. 함수, 반복문, 조건문 내부는 반드시 들여쓰기해야 합니다.
def greet():
print("안녕") # 4칸 들여쓰기
print("반가워")
팁: VS Code나 PyCharm 같은 IDE는 자동으로 들여쓰기를 맞춰줍니다. 텍스트 에디터 사용 시 “스페이스 4칸” 규칙을 기억하세요.
3. NameError: 정의되지 않은 변수
증상
print(name)
NameError: name 'name' is not defined
원인과 해결
변수를 사용 전에 정의하지 않았거나, 철자가 틀렸을 때 발생합니다.
# 해결 1: 변수 먼저 정의
name = "홍길동"
print(name)
# 해결 2: 철자 확인
user_name = "김철수"
print(user_name) # username (X)
함수에서도 주의
def calculate():
result = 10 + 20
print(result) # NameError!
함수 내부 변수는 함수 밖에서 사용할 수 없습니다 (스코프 문제).
4. IndexError: 리스트 범위 초과
증상
fruits = ["사과", "바나나"]
print(fruits[2])
IndexError: list index out of range
원인과 해결
Python 리스트는 0부터 시작합니다. 위 예제에서 인덱스는 0, 1만 유효합니다.
fruits = ["사과", "바나나"]
print(fruits[0]) # "사과"
print(fruits[1]) # "바나나"
print(len(fruits)) # 2 (길이 확인)
안전한 접근법
if len(fruits) > 2:
print(fruits[2])
else:
print("인덱스 2는 존재하지 않음")
5. KeyError: 딕셔너리 키 오류
증상
user = {"name": "Alice", "age": 25}
print(user["email"])
KeyError: 'email'
원인과 해결
딕셔너리에 존재하지 않는 키에 접근할 때 발생합니다.
# 해결 1: get() 메서드 (기본값 반환)
print(user.get("email", "이메일 없음")) # "이메일 없음"
# 해결 2: 키 존재 여부 확인
if "email" in user:
print(user["email"])
6. ModuleNotFoundError: 모듈 임포트 실패
증상
import pandas
ModuleNotFoundError: No module named 'pandas'
원인과 해결
라이브러리가 설치되지 않았거나, 가상환경이 활성화되지 않았을 때 발생합니다.
# 해결: pip로 설치
pip install pandas
# 가상환경 확인
which python # 현재 Python 경로 확인
자주 하는 실수
import Pandas # 대소문자 틀림 (pandas가 맞음)
import panads # 철자 오류
7. TypeError: 타입 불일치
증상
age = "25"
print(age + 5)
TypeError: can only concatenate str (not "int") to str
원인과 해결
문자열과 숫자를 직접 연산할 수 없습니다.
# 해결 1: 타입 변환
age = "25"
print(int(age) + 5) # 30
# 해결 2: 문자열 결합
print(age + str(5)) # "255"
타입 확인법
type(age) # <class 'str'>
type(5) # <class 'int'>
에러 대응 전략
| 단계 | 행동 |
|---|---|
| 1 | 에러 메시지 마지막 줄을 먼저 읽기 |
| 2 | 파일명과 줄번호 확인 (예: File "test.py", line 5) |
| 3 | 해당 줄과 바로 앞 줄 함께 점검 |
| 4 | 에러 타입으로 Google 검색 (영어로) |
마무리
이 7가지 에러만 정복해도 Python 초보 단계의 80% 문제를 해결할 수 있습니다. 에러는 실력 향상의 기회입니다. 다음 편에서는 TypeError, ValueError, AttributeError 같은 중급 에러를 실전 디버깅 관점에서 다뤄보겠습니다.
기억하세요: 에러 메시지는 적이 아니라 Python이 보내는 힌트입니다. 천천히 읽고, 패턴을 익히면 누구나 능숙한 디버거가 될 수 있습니다!
이 글이 도움이 되셨나요? ☕
Buy me a coffee
답글 남기기