종합 정리
수업 목표
- 출력과 입력부터 제어문, 반복문, 복합 자료구조, 함수 모듈 설계까지 한 학기 동안 학습한 파이썬 프로그래밍의 핵심 개념을 요약하고 설명할 수 있다.
- 변수 스코프 예외, 오프바이원 경계 오류, ZeroDivision
error, KeyError 등 단골 프로그래밍 논리적 결함들을 스스로 분석하여 수정할 수 있다. - 종합 패턴 정리표와 체크리스트를 기반으로 실전 문제 해결을 위한 알고리즘적 사고 프로세스를 수립할 수 있다.
생각해보기: 파이썬 지도 그리기
새로운 도시로 여행을 떠나기 전 지도를 펼쳐놓고 주요 랜드마크들의 위치와 연결 도로를 파악하면, 골목길에서 길을 잃지 않고 목적지를 향해 안전하게 걸어갈 수 있습니다. 코딩 학습 역시 마찬가지입니다. 지금까지 배운 수많은 문법과 알고리즘이 개별적으로 흩어져 있다면, 복합적이고 어려운 실전 문제를 만났을 때 무엇을 사용해 해결해야 할지 당황하게 됩니다.
출력(print)의 첫걸음부터 시작하여 조건문, 반복문, 리스트와 딕셔너리, 그리고 함수의 설계까지, 배운 지식들의 지도를 머릿속에 함께 그리고, 발생할 수 있는 주요 코딩 에러의 디버깅 방안을 마지막으로 정리해 봅시다.
1. 파이썬 프로그래밍 핵심 개념 구조도
한 학기 동안 배운 필수 문법 요소들의 연결 구조입니다.
- 기초 입출력 & 연산:
print()로 표현하고input()으로 받기. 사칙연산과 몫(//), 나머지(%)를 결합한 데이터 제어. - 제어 흐름 (조건문):
if-elif-else분기를 활용한 상황 제어.and,or,not논리 연산을 이용한 다중 기준 결합. - 반복 구조 (루프): 횟수가 명확할 땐
for+range(), 상태에 의존할 땐while.break와continue를 통한 흐름 변경. - 복합 자료구조: 수정 불가능한 문자열(str)과 가변 리스트(list). 데이터 고속 탐색을 위한 딕셔너리(dict)와 중복을 정제하는 집합(set).
- 함수와 모듈화: 반복되는 코드를
def로 묶어 부품처럼 재활용. 매개변수와 반환값의 흐름 조율 및 조기 종료 패턴 설계.
2. 기말고사 대비 유형별 디버깅 팁
가. 변수 영역과 생명 주기 오류 (Scope NameError)
함수 안에서 선언된 임시 계산 변수(지역 변수)를 함수가 끝난 후 바깥쪽에서 부르거나, 전역 변수를 함수 내부에서 수정할 때의 범위 규칙 오류입니다.
# 잘못된 구현 예시:
def add():
local_val = 10
add()
# print(local_val) # ⚠️ NameError 발생! (local_val은 함수 밖에서 이미 지워짐)
오류 해결: 함수 안에서 계산된 결과 데이터를 외부 메인 코드로 넘기고자 할 때는 반드시 return을 활용해 반환값을 가공하여 전달하십시오.
나. 나눗셈 0 오류 방어 (ZeroDivisionerror)
수열의 평균이나 나눗셈 수식을 계산할 때, 입력 카운트나 분모가 되는 변수가 0인 경우에 발생하는 치명적 런타임 오류입니다.
# ⚠️ 0 나누기 오류를 방어하는 안전장치
if count != 0:
average = total / count
else:
average = 0
다. 오프바이원(Off-by-one) 경계 오차
range(시작, 끝)에서 끝 번호는 포함되지 않는다는 규칙을 깜빡하여 루프 횟수 계산이 하나씩 모자라거나 초과하는 실수입니다. 예를 들어 range(1, 10)은 9회만 돕니다.
라. 딕셔너리 키 부재 오류 (KeyError)
대괄호 dict[key] 형태로 딕셔너리를 직접 조회할 때, 존재하지 않는 임의의 키를 조회하면 프로그램이 멈춥니다.
오류 해결: 데이터 탐색 시 존재하지 않을 가능성이 있는 키는 dict.get(key, 기본값)을 통해 안전 처리하십시오.
자주 하는 실수 & 오류 예방
1. 들여쓰기 섞임 오류
공백 4칸으로 줄을 맞추다가 특정 행만 탭(Tab) 기호나 2칸 공백을 섞어 쓰면 예외가 터집니다. 눈에는 똑같은 정렬로 보여도 프로그램은 에러를 내뿜습니다.
오류 해결: 소스코드 에디터 설정에서 탭을 공백 4칸으로 변환하는 설정을 켜고 줄을 일정하게 통일하십시오.
2. 2중 루프 탈출 조건 설계 오류
중첩 루프 내부에서 타겟을 찾은 뒤, 단순 break 하나로 격자 탐색 전체가 멈출 것이라 착각하는 오류입니다. 탈출 상태 기록용 플래그 변수(found = True)를 설정해야 바깥 루프까지 안전하게 깰 수 있습니다.
핵심 정리
| 알고리즘 주제 | 핵심 핵심 개념 | 자주 빚어지는 논리적 오류 대책 |
|---|---|---|
| 기초 입출력 | print / input과 자료형 변환 |
입력받은 문자열 숫자는 int()로 형변환을 해야 수식 계산 가능 |
| 조건 / 반복 | if-elif-else 다중 분기 및 for/while 제어 | 동등 비교는 == 사용, while 문 제어 카운터 갱신 누락 방지 |
| 복합 자료구조 | list(가변) / str(불변) 및 dict / set | 단순 대입 복사는 주소를 복사하므로 슬라이싱 [:] 복사 이용 |
| 함수 설계 | def 선언과 지역/전역 변수 스코프 제어 | 함수 바깥으로 연산 결과를 반환할 때는 return 선언 필수 |
이번 주 대회 바로가기
1반 | 2반 | 3반 | 4반 | 5반 | 6반 | 7반 | 8반 | 9반
※ 대회 링크는 선생님이 별도 공지합니다.