영신여자고등학교 2학년 파이썬 수업 지도안

지도 교사: 김준오 선생님, 이은하 선생님 (정보과)

파이썬 수업 커리큘럼 로드맵

def python_journey(): knowledge = [] for lesson in curriculum: learn(lesson) practice(lesson) knowledge.append(lesson) return knowledge if __name__ == "__main__": start_learning() enjoy_coding() 영신여자고등학교 2학년 파이썬 수업 커리큘럼 로드맵 학습 가이드 입문 중급 고급 이론 실습 프로젝트 30차시 완성 커리큘럼 Phase 1: 기초 프로그래밍 (1-5차시) 1차시 Thonny IDE 사용법 기본 출력 2-3차시 변수와 데이터 타입 산술 연산 4-5차시 조건문 (if) if-else, elif Phase 2: 함수와 반복문 (6-11차시) 6-7차시 함수 기초와 정의 변수 범위 8-9차시 for 반복문 기초와 심화 10-11차시 while 반복문 기초와 심화 Phase 3: 개념 통합과 실습 (12-17차시) 12-15차시 조건문, 반복문, 함수 결합 16-17차시 응용 프로젝트 I - 간단한 계산기 응용 프로젝트 II - 숫자 맞추기 게임 Phase 4: 심화 프로젝트와 자료구조 (18-22차시) 18-19차시 리스트 데이터 처리 재귀 함수 20차시 중간 프로젝트 텍스트 어드벤처 게임 21-22차시 에러 처리와 디버깅 파일 입출력 Phase 5: 심화 개념과 알고리즘 (23-26차시) 23차시 모듈과 라이브러리 기초 24차시 알고리즘 기초 정렬과 검색 25-26차시 복합 자료구조 미니 데이터 분석 Phase 6: 최종 프로젝트 (27-30차시) 27차시 인터랙티브 프로그램 사용자 인터페이스 28-29차시 프로젝트 설계 코드 구현 및 테스트 30차시 최종 프로젝트 발표 및 리뷰

위 로드맵은 전체 30차시 파이썬 수업의 진행 과정을 시각화한 것입니다. 기초 프로그래밍부터 시작하여 점진적으로 심화 개념과 프로젝트로 진행됩니다.

1차시: Thonny IDE 사용법 및 기본 출력

목표: Thonny IDE를 설치하고 인터페이스를 이해하며 기본 출력("Hello, World")을 실습한다.

"Thonny IDE는 파이썬 초보자에게 최적화된 환경입니다. Thonny를 공식 웹사이트(https://thonny.org/)에서 설치한 후, 실행하면 좌측에 파일 탐색기, 우측에 코드 편집기와 콘솔이 보입니다. 메뉴바를 통해 실행, 저장, 디버깅 등의 기능을 사용할 수 있습니다."

[쉬운 예]

기본 예시 (데모 코드):

print("Hello, World")

*– Thonny에서 Run 버튼을 누르면 콘솔에 "Hello, World"가 출력됩니다.*

단계 문제:

"여러분만의 인삿말(예: '안녕, Thonny!')을 출력해보세요."

해답 코드 및 설명:

print("안녕, Thonny!")

*– 여러분이 원하는 인삿말을 출력합니다.*

2차시: 변수와 데이터 타입 기초

목표: 변수의 개념과 정수, 실수, 문자열 등의 데이터 타입을 이해한다.

"변수는 정보를 담는 작은 상자입니다. 예를 들어 '나이'나 '가격'처럼 여러분이 일상에서 사용하는 데이터를 저장할 수 있습니다."

[쉬운 예]

기본 예시 (데모 코드):

age = 17
print(age)

단계 문제:

"자신의 나이를 변수에 저장하고 출력해보세요."

해답 코드 및 설명:

my_age = 18  # 본인의 나이로 수정
print(my_age)

*– 간단한 변수 할당과 출력입니다.*

3차시: 변수 활용 및 산술 연산

목표: 변수 간 산술 연산을 수행하고 결과를 출력한다.

"오늘은 덧셈, 뺄셈, 곱셈, 나눗셈을 해보자. 여러분이 직접 계산기를 만드는 기초가 됩니다."

[쉬운 예]

기본 예시 (데모 코드):

a = 5
b = 3
print(a + b)

*– 두 수의 덧셈 예시입니다.*

단계 문제:

"두 수의 뺄셈 결과를 출력해보세요."

해답 코드 및 설명:

a = 5
b = 3
print(a - b)

*– 두 수의 뺄셈 결과를 출력합니다.*

[중간 예]

기본 예시 (데모 코드):

a = 10
b = 2
print(a * b)

단계 문제:

"나눗셈과 나머지 연산을 포함하는 코드를 작성해보세요."

해답 코드 및 설명:

a = 10
b = 3
print("나눗셈:", a / b)
print("나머지:", a % b)

*– 나눗셈(/)과 나머지(%) 연산을 사용합니다.*

[어려운 예]

기본 예시 (데모 코드):

num1 = float(input("첫 번째 숫자: "))
num2 = float(input("두 번째 숫자: "))
print("합계:", num1 + num2)

단계 문제:

"사칙연산(+, -, *, /)을 모두 수행하는 계산기 프로그램을 작성해보세요."

해답 코드 및 설명:

num1 = float(input("첫 번째 숫자: "))
num2 = float(input("두 번째 숫자: "))
print("더하기:", num1 + num2)
print("빼기:", num1 - num2)
print("곱하기:", num1 * num2)
print("나누기:", num1 / num2)

*– 모든 사칙연산을 차례대로 수행합니다.*

4차시: 조건문 (if) 기초

목표: if 조건문의 기본 구조와 실행 흐름을 이해한다.

"if문을 사용하면 조건이 참일 때만 특정 코드를 실행할 수 있습니다."

[쉬운 예]

기본 예시 (데모 코드):

num = 15
if num > 10:
    print("10보다 큽니다.")

단계 문제:

"숫자가 5보다 작으면 '5보다 작습니다'를 출력하는 코드를 작성해보세요."

해답 코드 및 설명:

num = 3
if num < 5:
    print("5보다 작습니다.")

*– if 조건이 참일 때 메시지가 출력됩니다.*

[중간 예]

기본 예시 (데모 코드):

a = 8
b = 12
if a < b:
    print("a는 b보다 작습니다.")

단계 문제:

"두 변수의 값 비교 후 큰 수를 출력하는 코드를 작성해보세요."

해답 코드 및 설명:

a = 8
b = 12
if a > b:
    print(a)
else:
    print(b)

*– if-else를 사용하여 두 값 중 큰 값을 출력합니다.*

[어려운 예]

기본 예시 (데모 코드):

age = int(input("나이를 입력하세요: "))
if age >= 18:
    print("성인입니다.")
else:
    print("미성년자입니다.")

단계 문제:

"나이에 따라 '청소년', '성인', '중년', '노년'을 출력하는 코드를 작성해보세요."

해답 코드 및 설명:

age = int(input("나이를 입력하세요: "))
if age < 18:
    print("청소년")
elif age < 40:
    print("성인")
elif age < 65:
    print("중년")
else:
    print("노년")

*– 조건문을 통해 여러 경우를 분기합니다.*

5차시: 조건문 (if-else, elif) 심화

목표: if-else와 elif를 사용하여 다중 조건을 처리하는 방법을 배운다.

"여러 조건을 한 번에 처리할 수 있습니다. 복잡한 선택지를 구현해보세요!"

[쉬운 예]

기본 예시 (데모 코드):

num = 0
if num >= 0:
    print("양수입니다.")
else:
    print("음수입니다.")

단계 문제:

"숫자가 0이면 '제로', 양수이면 '양수', 음수이면 '음수'를 출력하는 코드를 작성해보세요."

해답 코드 및 설명:

num = int(input("숫자를 입력하세요: "))
if num > 0:
    print("양수")
elif num < 0:
    print("음수")
else:
    print("제로")

*– if-elif-else로 세 경우를 처리합니다.*

[중간 예]

기본 예시 (데모 코드):

score = 85
if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
else:
    grade = "C"
print("등급:", grade)

단계 문제:

"학생 점수를 입력받아 90 이상은 'A', 80 이상은 'B', 70 이상은 'C', 그 외는 'F'를 출력하는 코드를 작성해보세요."

해답 코드 및 설명:

score = int(input("점수를 입력하세요: "))
if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
elif score >= 70:
    grade = "C"
else:
    grade = "F"
print("등급:", grade)

*– 여러 조건문을 통해 등급을 결정합니다.*

[어려운 예]

기본 예시 (데모 코드):

temperature = float(input("현재 온도: "))
if temperature > 30:
    print("더움")
elif temperature > 20:
    print("적정")
elif temperature > 10:
    print("선선함")
else:
    print("추움")

단계 문제:

"사용자 입력 온도에 따라 '매우 더움', '약간 더움', '적정', '선선함', '매우 추움'을 출력하는 코드를 작성해보세요."

해답 코드 및 설명:

temp = float(input("현재 온도를 입력하세요: "))
if temp > 35:
    print("매우 더움")
elif temp > 30:
    print("약간 더움")
elif temp > 20:
    print("적정")
elif temp > 10:
    print("선선함")
else:
    print("매우 추움")

*– 조건을 더 세분화하여 날씨 상태를 출력합니다.*

6차시: 함수 기초와 정의

목표: 함수를 정의하고 호출하는 방법을 익힌다.

"함수는 반복되는 작업을 효율적으로 처리하는 도구입니다. 마치 레시피와 같죠!"

[쉬운 예]

기본 예시 (데모 코드):

def say_hello():
    print("안녕하세요!")
say_hello()

단계 문제:

"자신만의 인사 메시지를 출력하는 함수를 작성해보세요."

해답 코드 및 설명:

def my_greeting():
    print("안녕하세요, 여러분!")
my_greeting()

*– 함수 호출 시 인사 메시지를 출력합니다.*

[중간 예]

기본 예시 (데모 코드):

def add(a, b):
    return a + b
result = add(3, 4)
print("합계:", result)

단계 문제:

"두 숫자를 입력받아 곱셈 결과를 반환하는 함수를 작성해보세요."

해답 코드 및 설명:

def multiply(a, b):
    return a * b
print("곱셈 결과:", multiply(3, 4))

*– 함수가 두 숫자의 곱셈 결과를 반환합니다.*

[어려운 예]

기본 예시 (데모 코드):

def calculate(a, b, operation):
    if operation == "add":
        return a + b
    elif operation == "subtract":
        return a - b
    else:
        return None
print(calculate(10, 5, "subtract"))

단계 문제:

"나눗셈과 곱셈 연산도 포함하는 함수를 작성해보세요."

해답 코드 및 설명:

def calculate(a, b, operation):
    if operation == "add":
        return a + b
    elif operation == "subtract":
        return a - b
    elif operation == "multiply":
        return a * b
    elif operation == "divide":
        return a / b
    else:
        return "잘못된 연산"
print(calculate(10, 5, "divide"))

*– 다양한 연산을 처리하는 함수를 구현했습니다.*

7차시: 함수 심화 및 변수 범위

목표: 함수 내부의 지역 변수와 전역 변수의 차이를 이해한다.

"함수 안의 변수는 그 함수만의 비밀 상자이고, 전역 변수는 모두가 함께 사용하는 도구입니다."

[쉬운 예]

기본 예시 (데모 코드):

def demo():
    local_var = "나는 함수 내부 변수"
    print(local_var)
demo()

단계 문제:

"함수 내에서 새로운 지역 변수를 만들어 출력해보세요."

해답 코드 및 설명:

def show_message():
    msg = "지역 변수 예시"
    print(msg)
show_message()

*– msg라는 지역 변수를 생성하고 출력합니다.*

[중간 예]

기본 예시 (데모 코드):

global_var = "전역 변수"
def demo():
    print(global_var)
demo()

단계 문제:

"전역 변수와 지역 변수를 함께 사용해 전역 변수의 값을 변경하는 코드를 작성해보세요."

해답 코드 및 설명:

count = 10
def modify():
    global count
    count = 20
modify()
print(count)

*– 전역 변수 count의 값을 함수 내에서 변경합니다.*

[어려운 예]

기본 예시 (데모 코드):

var = 10
def modify():
    global var
    var = 20
modify()
print(var)

단계 문제:

"두 개 이상의 함수를 사용해 전역 변수와 지역 변수가 혼합된 예제를 작성해보세요."

해답 코드 및 설명:

shared = 5
def increase():
    global shared
    shared += 5
def show():
    print("현재 값:", shared)
increase()
show()

*– 한 함수에서 전역 변수를 수정하고, 다른 함수에서 출력합니다.*

8차시: for 반복문 기초

목표: for 반복문의 기본 구조와 리스트, 문자열 순회를 익힌다.

"for문은 리스트나 문자열의 각 요소를 하나씩 처리합니다. 기본기를 다져봅시다."

[쉬운 예]

기본 예시 (데모 코드):

fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)

*– 리스트 요소를 출력하는 기본 예제입니다.*

단계 문제:

"자신이 좋아하는 과일 목록을 리스트에 저장하고 출력해보세요."

해답 코드 및 설명:

my_fruits = ["딸기", "포도", "오렌지"]
for fruit in my_fruits:
    print(fruit)

*– 리스트의 각 요소를 for문으로 출력합니다.*

[중간 예]

기본 예시 (데모 코드):

word = "python"
for letter in word:
    print(letter)

*– 문자열의 각 문자를 출력합니다.*

단계 문제:

"사용자로부터 입력받은 문자열을 한 글자씩 출력하는 코드를 작성해보세요."

해답 코드 및 설명:

user_input = input("문자열을 입력하세요: ")
for ch in user_input:
    print(ch)

*– 입력받은 문자열의 각 문자를 출력합니다.*

[어려운 예]

기본 예시 (데모 코드):

for i in range(1, 10):
    print(f"구구단 2단: 2 x {i} = {2 * i}")

단계 문제:

"사용자로부터 원하는 단을 입력받아 해당 단의 구구단을 출력하는 코드를 작성해보세요."

해답 코드 및 설명:

dan = int(input("몇 단을 출력할까요? "))
for i in range(1, 10):
    print(f"{dan} x {i} = {dan * i}")

*– 사용자가 입력한 단에 대해 구구단을 출력합니다.*

9차시: for 반복문 심화

목표: 중첩 for문과 다양한 컬렉션 순회 방법을 학습한다.

"중첩 for문을 사용하면 2차원 이상의 데이터를 쉽게 처리할 수 있습니다."

[쉬운 예]

기본 예시 (데모 코드):

matrix = [[1, 2], [3, 4]]
for row in matrix:
    for num in row:
        print(num, end=" ")
    print()

*– 2차원 리스트의 요소를 출력합니다.*

단계 문제:

"3x3 행렬을 만들어 모든 요소를 출력하는 코드를 작성해보세요."

해답 코드 및 설명:

matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]
for row in matrix:
    for num in row:
        print(num, end=" ")
    print()

*– 중첩 for문으로 3x3 행렬의 각 요소를 출력합니다.*

[중간 예]

기본 예시 (데모 코드):

for i in range(1, 6):
    print("*" * i)

*– 증가하는 별 패턴 출력 예제입니다.*

단계 문제:

"별의 개수가 줄어드는 역방향 패턴을 출력하는 코드를 작성해보세요."

해답 코드 및 설명:

for i in range(5, 0, -1):
    print("*" * i)

*– 역순 range()를 사용하여 별 패턴을 출력합니다.*

[어려운 예]

기본 예시 (데모 코드):

matrix1 = [[1, 2], [3, 4]]
matrix2 = [[5, 6], [7, 8]]
result = [[0, 0], [0, 0]]
for i in range(2):
    for j in range(2):
        result[i][j] = matrix1[i][j] + matrix2[i][j]
print(result)

*– 두 행렬의 덧셈을 중첩 for문으로 구현합니다.*

단계 문제:

"3x3 행렬의 덧셈을 구현하는 코드를 작성해보세요."

해답 코드 및 설명:

matrix1 = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]
matrix2 = [
    [9, 8, 7],
    [6, 5, 4],
    [3, 2, 1]
]
result = []
for i in range(3):
    row = []
    for j in range(3):
        row.append(matrix1[i][j] + matrix2[i][j])
    result.append(row)
print(result)

*– 3x3 행렬의 각 요소를 더해 새로운 행렬을 만듭니다.*

10차시: while 반복문 기초

목표: while 반복문의 기본 구조와 사용법을 익힌다.

"while문은 조건이 참인 동안 계속 반복합니다. 기본 예제를 통해 연습해봅시다."

[쉬운 예]

기본 예시 (데모 코드):

i = 1
while i <= 5:
    print(i)
    i += 1

*– 1부터 5까지 출력합니다.*

단계 문제:

"1부터 10까지 출력하는 while 루프를 작성해보세요."

해답 코드 및 설명:

i = 1
while i <= 10:
    print(i)
    i += 1

*– while문으로 1부터 10까지 출력합니다.*

[중간 예]

기본 예시 (데모 코드):

count = 0
while count < 3:
    print("반복 중")
    count += 1

*– 3회 반복 예제입니다.*

단계 문제:

"사용자가 입력한 횟수만큼 'Hello'를 출력하는 코드를 작성해보세요."

해답 코드 및 설명:

times = int(input("몇 번 반복할까요? "))
count = 0
while count < times:
    print("Hello")
    count += 1

*– 사용자가 지정한 횟수만큼 반복합니다.*

[어려운 예]

기본 예시 (데모 코드):

while True:
    data = input("종료하려면 '끝'을 입력하세요: ")
    if data == "끝":
        break
    print("입력값:", data)

*– '끝' 입력 시 루프 종료.*

단계 문제:

"입력된 숫자가 0이면 종료하는 while 루프를 작성해보세요."

해답 코드 및 설명:

while True:
    num = int(input("숫자를 입력하세요 (0이면 종료): "))
    if num == 0:
        break
    print("입력된 숫자:", num)

*– 0 입력 시 종료됩니다.*

11차시: while 반복문 심화

목표: 복잡한 조건과 탈출 조건을 포함한 while문을 작성한다.

"여러 조건을 활용하여 while문을 작성해보자!"

[쉬운 예]

기본 예시 (데모 코드):

while True:
    word = input("단어를 입력하세요 ('종료' 입력 시 종료): ")
    if word == "종료":
        break
    print("입력:", word)

단계 문제:

"'끝'을 입력하면 종료하는 코드를 작성해보세요."

해답 코드 및 설명:

while True:
    word = input("단어를 입력하세요 ('끝' 입력 시 종료): ")
    if word == "끝":
        break
    print("입력:", word)

*– 종료 조건을 '끝'으로 설정합니다.*

[중간 예]

기본 예시 (데모 코드):

total = 0
while True:
    num = int(input("숫자 입력 (0 입력 시 종료): "))
    if num == 0:
        break
    total += num
print("합계:", total)

단계 문제:

"입력받은 숫자들의 평균을 계산하는 코드를 작성해보세요."

해답 코드 및 설명:

total = 0
count = 0
while True:
    num = int(input("숫자 입력 (0 입력 시 종료): "))
    if num == 0:
        break
    total += num
    count += 1
if count > 0:
    print("평균:", total / count)
else:
    print("입력된 숫자가 없습니다.")

*– 합계와 개수를 이용하여 평균을 계산합니다.*

[어려운 예]

기본 예시 (데모 코드):

while True:
    data = input("데이터 입력 ('exit' 시 종료): ")
    if len(data) > 10:
        print("데이터가 너무 깁니다. 다시 입력하세요.")
        continue
    if data == "exit":
        break
    print("입력값:", data)

단계 문제:

"문자열 길이가 8자 이상이면 경고 메시지를 출력하고, '종료'를 입력하면 루프를 종료하는 코드를 작성해보세요."

해답 코드 및 설명:

while True:
    data = input("문자열 입력 ('종료' 시 종료): ")
    if len(data) >= 8:
        print("경고: 문자열이 너무 깁니다!")
        continue
    if data == "종료":
        break
    print("입력값:", data)

*– 문자열 길이 조건과 종료 조건을 함께 처리합니다.*

12차시: 조건문과 반복문 결합 I

목표: 조건문과 반복문을 결합하여 문제를 해결한다.

"조건문과 반복문의 조합으로 프로그램의 흐름을 제어할 수 있습니다."

[쉬운 예]

기본 예시 (데모 코드):

for i in range(1, 6):
    if i % 2 == 0:
        print(i, "짝수")

단계 문제:

"1부터 10까지의 수 중 홀수와 짝수를 구분하여 출력해보세요."

해답 코드 및 설명:

for i in range(1, 11):
    if i % 2 == 0:
        print(i, "짝수")
    else:
        print(i, "홀수")

*– 조건문을 사용해 홀수와 짝수를 구분합니다.*

[중간 예]

기본 예시 (데모 코드):

secret = 7
for i in range(1, 11):
    if i == secret:
        print("맞았습니다!")
        break
    else:
        print("다시 시도하세요.")

단계 문제:

"사용자 입력을 받아 secret 숫자와 비교하는 숫자 맞추기 게임 코드를 작성해보세요."

해답 코드 및 설명:

secret = 7
guess = int(input("1부터 10 사이의 숫자를 추측하세요: "))
if guess == secret:
    print("정답입니다!")
else:
    print("오답입니다.")

*– 사용자 입력과 조건문을 활용하여 숫자 맞추기를 구현합니다.*

[어려운 예]

기본 예시 (데모 코드):

secret = 5
attempts = 0
while attempts < 3:
    guess = int(input("숫자를 맞춰보세요: "))
    if guess == secret:
        print("정답!")
        break
    else:
        print("오답!")
    attempts += 1
else:
    print("실패했습니다.")

단계 문제:

"시도 횟수를 늘리고, 입력된 숫자에 따라 '더 높게' 또는 '더 낮게' 힌트를 주는 게임을 작성해보세요."

해답 코드 및 설명:

secret = 5
attempts = 0
while attempts < 5:
    guess = int(input("숫자를 맞춰보세요: "))
    if guess == secret:
        print("정답!")
        break
    elif guess < secret:
        print("더 높은 수를 입력하세요.")
    else:
        print("더 낮은 수를 입력하세요.")
    attempts += 1
else:
    print("실패했습니다. 정답은", secret)

*– while문과 if-elif-else를 사용하여 게임 로직을 구현합니다.*

13차시: 함수와 반복문 결합 I

목표: 함수 내부에서 반복문을 사용하여 코드 재사용성을 높인다.

"함수 안에 반복문을 넣으면, 한 번 만든 코드를 여러 번 사용할 수 있습니다."

[쉬운 예]

기본 예시 (데모 코드):

def print_list(items):
    for item in items:
        print(item)
print_list(["a", "b", "c"])

단계 문제:

"숫자 리스트를 받아 각 요소에 2를 곱해 출력하는 함수를 작성해보세요."

해답 코드 및 설명:

def multiply_list(numbers):
    for num in numbers:
        print(num * 2)
multiply_list([1, 2, 3])

*– 각 요소에 2를 곱하여 출력합니다.*

[중간 예]

기본 예시 (데모 코드):

def greet_all(names):
    for name in names:
        print("안녕하세요, " + name + "님!")
greet_all(["민수", "지영"])

단계 문제:

"사용자 입력으로 받은 이름을 리스트에 추가한 후, 인사하는 함수를 작성해보세요."

해답 코드 및 설명:

names = []
for _ in range(2):
    name = input("이름을 입력하세요: ")
    names.append(name)

def greet_all(names):
    for name in names:
        print("안녕하세요, " + name + "님!")

greet_all(names)

*– 사용자 입력으로 리스트를 구성하고 인사합니다.*

[어려운 예]

기본 예시 (데모 코드):

def process_numbers(numbers, operation):
    result = []
    for num in numbers:
        if operation == "square":
            result.append(num ** 2)
        elif operation == "cube":
            result.append(num ** 3)
    return result
print(process_numbers([1, 2, 3], "cube"))

단계 문제:

"여러 연산(예: 제곱, 세제곱, 반값)을 선택하여 처리하는 함수를 작성해보세요."

해답 코드 및 설명:

def process_numbers(numbers, operation):
    result = []
    for num in numbers:
        if operation == "square":
            result.append(num ** 2)
        elif operation == "cube":
            result.append(num ** 3)
        elif operation == "half":
            result.append(num / 2)
        else:
            result.append(num)
    return result

print(process_numbers([2, 4, 6], "half"))

*– 조건문을 사용하여 다양한 연산을 적용합니다.*

14차시: 함수와 조건문 결합 I

목표: 함수 내부에서 조건문을 사용하여 분기 처리를 구현한다.

"함수 안에서 조건문을 사용하면, 상황에 따라 다른 동작을 수행할 수 있습니다."

[쉬운 예]

기본 예시 (데모 코드):

def check_even(num):
    if num % 2 == 0:
        print("짝수입니다.")
    else:
        print("홀수입니다.")
check_even(4)

단계 문제:

"여러 숫자를 입력하여 각 숫자의 홀짝을 판단하는 함수를 작성해보세요."

해답 코드 및 설명:

def check_even(num):
    if num % 2 == 0:
        print(num, "은(는) 짝수입니다.")
    else:
        print(num, "은(는) 홀수입니다.")

for n in [3, 6, 9]:
    check_even(n)

*– 리스트의 각 숫자에 대해 홀짝을 판단합니다.*

[중간 예]

기본 예시 (데모 코드):

def grade(score):
    if score >= 90:
        return "A"
    elif score >= 80:
        return "B"
    else:
        return "C"
print(grade(85))

단계 문제:

"학생 점수를 입력받아 90 이상은 'A', 80 이상은 'B', 70 이상은 'C', 그 외는 'F'를 출력하는 함수를 작성해보세요."

해답 코드 및 설명:

def grade(score):
    if score >= 90:
        return "A"
    elif score >= 80:
        return "B"
    elif score >= 70:
        return "C"
    else:
        return "F"

score = int(input("점수를 입력하세요: "))
print("등급:", grade(score))

*– 조건문을 통해 등급을 결정합니다.*

[어려운 예]

기본 예시 (데모 코드):

def evaluate_exam(score, attendance):
    if score >= 70 and attendance >= 80:
        return "합격"
    else:
        return "불합격"
print(evaluate_exam(75, 85))

단계 문제:

"과제 제출 여부를 추가 조건으로 고려하여 합격 여부를 결정하는 함수를 작성해보세요."

해답 코드 및 설명:

def evaluate_exam(score, attendance, homework):
    if score >= 70 and attendance >= 80 and homework:
        return "합격"
    else:
        return "불합격"
print(evaluate_exam(75, 85, True))

*– 세 조건을 모두 고려하여 결과를 출력합니다.*

15차시: 반복문 및 조건문 결합 II

목표: for, while 반복문과 조건문을 복합적으로 활용하여 문제를 해결한다.

"여러 조건과 반복문을 함께 사용하면 복잡한 문제도 해결할 수 있습니다."

[쉬운 예]

기본 예시 (데모 코드):

for i in range(1, 11):
    if i % 2 == 0:
        print(i, "짝수")

단계 문제:

"1부터 20까지의 수 중 홀수만 출력하는 코드를 작성해보세요."

해답 코드 및 설명:

for i in range(1, 21):
    if i % 2 != 0:
        print(i, "홀수")

*– 홀수만 선택하여 출력합니다.*

[중간 예]

기본 예시 (데모 코드):

total = 0
i = 1
while i <= 10:
    if i % 2 == 0:
        total += i
    i += 1
print("짝수 합계:", total)

단계 문제:

"1부터 15까지의 홀수 합계를 계산하는 코드를 작성해보세요."

해답 코드 및 설명:

total = 0
i = 1
while i <= 15:
    if i % 2 != 0:
        total += i
    i += 1
print("홀수 합계:", total)

*– while문과 조건문을 이용해 홀수의 합계를 구합니다.*

[어려운 예]

기본 예시 (데모 코드):

secret = 3
attempts = 0
while attempts < 5:
    guess = int(input("숫자를 추측해보세요: "))
    if guess == secret:
        print("정답!")
        break
    else:
        print("오답!")
    attempts += 1
else:
    print("실패: 정답은", secret)

단계 문제:

"시도 횟수를 늘리고, 입력된 숫자에 따라 '더 높게' 또는 '더 낮게' 힌트를 주는 게임을 작성해보세요."

해답 코드 및 설명:

secret = 3
attempts = 0
while attempts < 7:
    guess = int(input("숫자를 추측하세요: "))
    if guess == secret:
        print("정답!")
        break
    elif guess < secret:
        print("더 높은 수를 입력하세요.")
    else:
        print("더 낮은 수를 입력하세요.")
    attempts += 1
else:
    print("실패: 정답은", secret)

*– 조건문과 반복문으로 힌트를 추가해 게임을 개선합니다.*

16차시: 응용 프로젝트 I – 간단 계산기

목표: 지금까지 배운 내용을 활용하여 계산기 프로그램을 구현한다.

"실생활에서 유용한 계산기를 직접 만들어보자! 기본 연산을 수행하는 코드를 작성해봅니다."

[쉬운 예]

기본 예시 (데모 코드):

def add(a, b):
    return a + b
print("3 + 2 =", add(3, 2))

단계 문제:

"빼기 기능을 추가하여 두 수의 차이를 계산하는 함수를 작성해보세요."

해답 코드 및 설명:

def subtract(a, b):
    return a - b
print("5 - 3 =", subtract(5, 3))

*– 뺄셈을 구현합니다.*

[중간 예]

기본 예시 (데모 코드):

while True:
    op = input("연산 입력 (+, -, 종료): ")
    if op == "종료":
        break
    num1 = float(input("첫 번째 숫자: "))
    num2 = float(input("두 번째 숫자: "))
    if op == "+":
        print("결과:", num1 + num2)
    elif op == "-":
        print("결과:", num1 - num2)

단계 문제:

"곱셈과 나눗셈 기능을 추가하여 계산기를 완성해보세요."

해답 코드 및 설명:

while True:
    op = input("연산 입력 (+, -, *, /, 종료): ")
    if op == "종료":
        break
    num1 = float(input("첫 번째 숫자: "))
    num2 = float(input("두 번째 숫자: "))
    if op == "+":
        print("결과:", num1 + num2)
    elif op == "-":
        print("결과:", num1 - num2)
    elif op == "*":
        print("결과:", num1 * num2)
    elif op == "/":
        print("결과:", num1 / num2)

*– 다양한 연산을 지원합니다.*

[어려운 예]

기본 예시 (데모 코드):

def calculator():
    while True:
        op = input("연산 입력 (+, -, *, /, 종료): ")
        if op == "종료":
            break
        try:
            num1 = float(input("첫 번째 숫자: "))
            num2 = float(input("두 번째 숫자: "))
            if op == "+":
                result = num1 + num2
            elif op == "-":
                result = num1 - num2
            elif op == "*":
                result = num1 * num2
            elif op == "/":
                result = num1 / num2
            print("결과:", result)
        except Exception as e:
            print("오류 발생:", e)
calculator()

단계 문제:

"에러 처리를 강화하고, 0으로 나누는 등의 오류 발생 시 재시도를 유도하는 코드를 작성해보세요."

해답 코드 및 설명:

def calculator():
    while True:
        op = input("연산 입력 (+, -, *, /, 종료): ")
        if op == "종료":
            break
        try:
            num1 = float(input("첫 번째 숫자: "))
            num2 = float(input("두 번째 숫자: "))
            if op == "+":
                result = num1 + num2
            elif op == "-":
                result = num1 - num2
            elif op == "*":
                result = num1 * num2
            elif op == "/":
                if num2 == 0:
                    print("0으로 나눌 수 없습니다. 다시 시도하세요.")
                    continue
                result = num1 / num2
            else:
                print("알 수 없는 연산입니다.")
                continue
            print("결과:", result)
        except Exception as e:
            print("오류 발생:", e, "다시 시도하세요.")
calculator()

*– 에러 발생 시 적절한 메시지와 함께 재시도를 유도합니다.*

17차시: 응용 프로젝트 II – 숫자 맞추기 게임

목표: 랜덤 숫자 생성과 조건문, 반복문을 활용하여 숫자 맞추기 게임을 구현한다.

"게임을 통해 코딩의 재미를 느껴보자. 실패해도 배우는 경험입니다!"

[쉬운 예]

기본 예시 (데모 코드):

import random
secret = random.randint(1, 10)
guess = int(input("1~10 사이의 숫자를 맞춰보세요: "))
if guess == secret:
    print("정답!")
else:
    print("오답! 정답은", secret)

단계 문제:

"시도 횟수를 3회로 제한하는 숫자 맞추기 게임을 작성해보세요."

해답 코드 및 설명:

import random
secret = random.randint(1, 10)
attempts = 0
while attempts < 3:
    guess = int(input("1~10 사이의 숫자를 추측하세요: "))
    if guess == secret:
        print("정답!")
        break
    else:
        print("오답!")
    attempts += 1
else:
    print("실패: 정답은", secret)

*– while문으로 시도 횟수를 제한합니다.*

[중간 예]

기본 예시 (데모 코드):

import random
secret = random.randint(1, 20)
attempts = 0
while attempts < 3:
    guess = int(input("숫자를 추측해보세요: "))
    if guess == secret:
        print("정답!")
        break
    elif guess < secret:
        print("더 높은 수를 입력하세요.")
    else:
        print("더 낮은 수를 입력하세요.")
    attempts += 1
else:
    print("실패: 정답은", secret)

*– 조건문을 사용해 힌트를 제공합니다.*

[어려운 예]

기본 예시 (데모 코드):

import random
secret = random.randint(1, 50)
attempts = 0
while attempts < 5:
    guess = int(input("숫자를 맞춰보세요: "))
    if guess == secret:
        print("정답!")
        break
    elif guess < secret:
        print("더 큰 수를 입력하세요.")
    else:
        print("더 작은 수를 입력하세요.")
    attempts += 1
else:
    print("실패: 정답은", secret)

단계 문제:

"게임 난이도를 선택하여, 난이도에 따라 시도 횟수와 숫자 범위를 조절하는 게임을 작성해보세요."

해답 코드 및 설명:

import random
difficulty = input("난이도를 선택하세요 (쉬움, 중간, 어려움): ")
if difficulty == "쉬움":
    secret = random.randint(1, 10)
    max_attempts = 5
elif difficulty == "중간":
    secret = random.randint(1, 20)
    max_attempts = 3
else:
    secret = random.randint(1, 50)
    max_attempts = 3

attempts = 0
while attempts < max_attempts:
    guess = int(input("숫자를 추측하세요: "))
    if guess == secret:
        print("정답!")
        break
    elif guess < secret:
        print("더 큰 수를 입력하세요.")
    else:
        print("더 작은 수를 입력하세요.")
    attempts += 1
else:
    print("실패: 정답은", secret)

*– 난이도 선택에 따라 게임의 범위와 시도 횟수를 조절합니다.*

18차시: 응용 프로젝트 III – 리스트 데이터 처리

목표: 리스트와 반복문, 조건문을 활용하여 데이터를 필터링하고 처리하는 방법을 학습한다.

"데이터 분석의 기초, 데이터를 다루어 의미 있는 정보를 뽑아봅시다!"

[쉬운 예]

기본 예시 (데모 코드):

numbers = [1, 2, 3, 4, 5, 6]
for num in numbers:
    if num % 2 == 0:
        print(num)

*– 짝수만 출력하는 예제입니다.*

단계 문제:

"리스트에서 홀수만 출력하는 코드를 작성해보세요."

해답 코드 및 설명:

numbers = [1, 2, 3, 4, 5, 6]
for num in numbers:
    if num % 2 != 0:
        print(num)

*– 홀수만 출력합니다.*

[중간 예]

기본 예시 (데모 코드):

scores = [80, 90, 70, 85]
total = 0
for score in scores:
    total += score
print("평균:", total / len(scores))

단계 문제:

"리스트의 합계와 평균을 함께 출력하는 코드를 작성해보세요."

해답 코드 및 설명:

scores = [80, 90, 70, 85]
total = sum(scores)
average = total / len(scores)
print("합계:", total, "평균:", average)

*– 내장 함수 sum()과 len()을 사용합니다.*

[어려운 예]

기본 예시 (데모 코드):

def analyze(data):
    total = sum(data)
    average = total / len(data)
    return {"total": total, "average": average}
print(analyze([10, 20, 30, 40]))

단계 문제:

"여러 함수를 사용하여 데이터 분석의 각 단계를 분리해 구현하는 코드를 작성해보세요."

해답 코드 및 설명:

def calculate_total(data):
    return sum(data)

def calculate_average(data):
    return sum(data) / len(data)

def analyze(data):
    return {"total": calculate_total(data), "average": calculate_average(data)}

print(analyze([10, 20, 30, 40]))

*– 함수 분리를 통해 가독성을 높입니다.*

19차시: 함수 활용 심화 – 재귀 함수 소개

목표: 재귀 함수의 개념과 구현 방법을 이해한다.

"재귀 함수는 자기 자신을 호출하는 함수입니다. 조금 어렵지만 도전해보세요!"

[쉬운 예]

기본 예시 (데모 코드):

def factorial(n):
    if n == 1:
        return 1
    else:
        return n * factorial(n - 1)
print(factorial(5))

단계 문제:

"재귀를 이용해 1부터 n까지의 합을 계산하는 함수를 작성해보세요."

해답 코드 및 설명:

def recursive_sum(n):
    if n == 1:
        return 1
    else:
        return n + recursive_sum(n - 1)
print(recursive_sum(5))

*– 5까지의 합을 재귀적으로 계산합니다.*

[중간 예]

기본 예시 (데모 코드):

def fibonacci(n):
    if n <= 1:
        return n
    else:
        return fibonacci(n-1) + fibonacci(n-2)
print(fibonacci(6))

단계 문제:

"재귀를 사용해 피보나치 수열의 리스트(예: 첫 7개 수)를 생성하는 코드를 작성해보세요."

해답 코드 및 설명:

def fibonacci(n):
    if n <= 1:
        return n
    else:
        return fibonacci(n-1) + fibonacci(n-2)

fib_sequence = [fibonacci(i) for i in range(7)]
print(fib_sequence)

*– 피보나치 수열 리스트를 생성합니다.*

[어려운 예]

기본 예시 (데모 코드):

def maze_solver(maze, pos):
    if pos == len(maze)-1:
        return True
    return maze_solver(maze, pos+1)
maze = [0, 0, 0, 0]
print(maze_solver(maze, 0))

단계 문제:

"재귀를 이용해 리스트 내에서 특정 값의 위치를 찾는 함수를 작성해보세요."

해답 코드 및 설명:

def find_index(lst, target, index=0):
    if index >= len(lst):
        return -1
    if lst[index] == target:
        return index
    return find_index(lst, target, index+1)

print(find_index([3, 5, 7, 9], 7))

*– 리스트 내 특정 값의 인덱스를 재귀적으로 찾습니다.*

20차시: 중간 프로젝트 I – 텍스트 기반 어드벤처 게임

목표: 지금까지 배운 개념(변수, 함수, 조건문, 반복문)을 모아 어드벤처 게임을 제작하고 발표한다.

"여러분, 이제까지 배운 걸 모아 자신만의 어드벤처 게임을 만들어보세요!"

[쉬운 예]

기본 예시 (데모 코드):

print("어드벤처 게임 시작!")
choice = input("왼쪽(L) 또는 오른쪽(R) 선택: ")
if choice == "L":
    print("왼쪽으로 갔습니다.")
else:
    print("오른쪽으로 갔습니다.")

단계 문제:

"기본 선택지 외에 추가 선택지를 넣어 게임의 분기를 늘려보세요."

해답 코드 및 설명:

print("어드벤처 게임 시작!")
choice = input("왼쪽(L), 오른쪽(R), 또는 뒤로(B) 선택: ")
if choice == "L":
    print("용을 만났습니다!")
elif choice == "R":
    print("보물을 찾았습니다!")
elif choice == "B":
    print("함정에 빠졌습니다!")
else:
    print("잘못된 선택입니다.")

*– if-elif-else로 게임 분기를 구성합니다.*

21차시: 에러 처리 및 디버깅 기초

목표: 에러 메시지를 해석하고 디버깅 및 에러 처리 기법을 익힌다.

"오류는 성장의 기회입니다. 에러 메시지를 읽고 문제를 해결해봅시다."

[쉬운 예]

기본 예시 (데모 코드):

# 아래 코드는 문법 오류가 있습니다.
# print("Hello

단계 문제:

"에러 메시지를 보고 올바른 구문으로 수정해보세요."

해답 코드 및 설명:

print("Hello")

*– 문법 오류를 수정합니다.*

[중간 예]

기본 예시 (데모 코드):

if True
    print("참입니다")

단계 문제:

"if문의 구문을 올바르게 수정해보세요."

해답 코드 및 설명:

if True:
    print("참입니다")

*– 콜론(:)을 추가합니다.*

[어려운 예]

기본 예시 (데모 코드):

def add(a, b):
    return a + b
print(add(5))

단계 문제:

"함수 호출 시 인자 수를 올바르게 전달하도록 수정해보세요."

해답 코드 및 설명:

def add(a, b):
    return a + b
print(add(5, 3))

*– 인자를 2개 전달해야 합니다.*

22차시: 파일 입출력 기초 (선택적 확장)

목표: 텍스트 파일에 데이터를 저장하고 읽어오는 방법을 익힌다.

"파일 입출력은 데이터를 영구 저장하는 방법입니다. 직접 실습해봅시다."

[쉬운 예]

기본 예시 (데모 코드):

with open("example.txt", "w") as f:
    f.write("Hello, File!")
with open("example.txt", "r") as f:
    print(f.read())

단계 문제:

"자신이 좋아하는 문장을 파일에 저장하고 읽어오는 코드를 작성해보세요."

해답 코드 및 설명:

with open("my_text.txt", "w") as f:
    f.write("나는 파이썬을 좋아해요!")
with open("my_text.txt", "r") as f:
    print(f.read())

*– 파일에 쓰고 읽어오는 과정을 실습합니다.*

[중간 예]

기본 예시 (데모 코드):

data = ["apple", "banana", "cherry"]
with open("fruits.txt", "w") as f:
    for fruit in data:
        f.write(fruit + "\n")
with open("fruits.txt", "r") as f:
    print(f.read())

단계 문제:

"여러 줄 데이터를 파일에 저장한 후 각 줄을 읽어 출력하는 코드를 작성해보세요."

해답 코드 및 설명:

data = ["line1", "line2", "line3"]
with open("lines.txt", "w") as f:
    for line in data:
        f.write(line + "\n")
with open("lines.txt", "r") as f:
    for line in f:
        print(line.strip())

*– 각 줄을 읽어 출력합니다.*

[어려운 예]

기본 예시 (데모 코드):

try:
    with open("data.txt", "w") as f:
        for i in range(5):
            f.write(str(i) + "\n")
except Exception as e:
    print("오류:", e)

단계 문제:

"파일 입출력 시 발생할 수 있는 오류를 처리하는 코드를 추가해보세요."

해답 코드 및 설명:

try:
    with open("data.txt", "w") as f:
        for i in range(5):
            f.write(str(i) + "\n")
except IOError as e:
    print("입출력 오류 발생:", e)

*– IOError를 사용해 오류를 처리합니다.*

23차시: 모듈과 라이브러리 기초

목표: 파이썬 내장 모듈 및 외부 라이브러리를 사용하는 방법을 익힌다.

"모듈은 이미 만들어진 도구 상자입니다. 필요한 도구를 꺼내 써서 문제를 해결해보세요!"

[쉬운 예]

기본 예시 (데모 코드):

import math
print(math.sqrt(16))

단계 문제:

"math 모듈을 사용하여 원의 넓이를 계산하는 코드를 작성해보세요. (반지름 입력)"

해답 코드 및 설명:

import math
radius = float(input("반지름을 입력하세요: "))
area = math.pi * radius ** 2
print("원의 넓이:", area)

*– math.pi와 제곱 연산을 활용합니다.*

[중간 예]

기본 예시 (데모 코드):

import random
print(random.randint(1, 10))

단계 문제:

"자신만의 숫자 추첨 프로그램을 작성해보세요."

해답 코드 및 설명:

import random
draw = random.randint(1, 100)
print("추첨 결과:", draw)

*– random 모듈로 무작위 숫자를 생성합니다.*

[어려운 예]

기본 예시 (데모 코드):

import datetime
now = datetime.datetime.now()
print("현재 날짜와 시간:", now)

단계 문제:

"특정 날짜에서 10일 후의 날짜를 계산하는 코드를 작성해보세요."

해답 코드 및 설명:

import datetime
date_str = input("날짜를 YYYY-MM-DD 형식으로 입력하세요: ")
date_obj = datetime.datetime.strptime(date_str, "%Y-%m-%d")
new_date = date_obj + datetime.timedelta(days=10)
print("10일 후의 날짜:", new_date.strftime("%Y-%m-%d"))

*– datetime과 timedelta를 사용합니다.*

24차시: 알고리즘 기초 – 정렬과 검색

목표: 기본 정렬 및 검색 알고리즘의 원리를 이해하고 구현한다.

"알고리즘은 문제를 단계별로 해결하는 방법입니다. 차근차근 코드를 작성해보세요."

[쉬운 예]

기본 예시 (데모 코드):

def bubble_sort(arr):
    n = len(arr)
    for i in range(n):
        for j in range(0, n-i-1):
            if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]
    return arr

print(bubble_sort([5, 3, 8, 1]))

단계 문제:

"리스트를 오름차순 정렬하는 코드를 직접 작성해보세요."

해답 코드 및 설명:

def bubble_sort(arr):
    n = len(arr)
    for i in range(n):
        for j in range(0, n-i-1):
            if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]
    return arr

print(bubble_sort([10, 2, 33, 4, 5]))

*– 버블 정렬로 리스트를 정렬합니다.*

[중간 예]

기본 예시 (데모 코드):

def linear_search(arr, target):
    for i in range(len(arr)):
        if arr[i] == target:
            return i
    return -1

print(linear_search([10, 20, 30, 40], 30))

단계 문제:

"리스트 내 특정 값의 존재 여부를 판단하는 코드를 작성해보세요."

해답 코드 및 설명:

def contains(arr, target):
    for item in arr:
        if item == target:
            return True
    return False

print(contains([1, 2, 3, 4], 3))

*– 선형 검색을 활용합니다.*

[어려운 예]

기본 예시 (데모 코드):

def binary_search(arr, target):
    low = 0
    high = len(arr) - 1
    while low <= high:
        mid = (low + high) // 2
        if arr[mid] == target:
            return mid
        elif arr[mid] < target:
            low = mid + 1
        else:
            high = mid - 1
    return -1

print(binary_search([1, 3, 5, 7, 9], 7))

단계 문제:

"이진 검색 알고리즘을 직접 구현해보세요."

해답 코드 및 설명:

def binary_search(arr, target):
    low = 0
    high = len(arr) - 1
    while low <= high:
        mid = (low + high) // 2
        if arr[mid] == target:
            return mid
        elif arr[mid] < target:
            low = mid + 1
        else:
            high = mid - 1
    return -1

print(binary_search([2, 4, 6, 8, 10], 8))

*– 이진 검색을 통해 정렬된 리스트에서 값을 찾습니다.*

25차시: 복합 자료구조 기초 – 리스트, 튜플, 딕셔너리

목표: 파이썬의 기본 자료구조 사용법을 익힌다.

"자료구조는 데이터를 저장하고 관리하는 방법입니다. 리스트, 튜플, 딕셔너리를 사용해보세요."

[쉬운 예]

기본 예시 (데모 코드):

fruits = ["apple", "banana", "cherry"]
print(fruits)

단계 문제:

"간단한 리스트를 만들어 출력해보세요."

해답 코드 및 설명:

my_list = ["사과", "바나나", "포도"]
print(my_list)

*– 리스트의 생성과 출력을 실습합니다.*

[중간 예]

기본 예시 (데모 코드):

person = ("홍길동", 18)
print(person)

단계 문제:

"튜플을 사용하여 이름과 나이를 저장하고 출력해보세요."

해답 코드 및 설명:

person = ("김민수", 17)
print("이름:", person[0], "나이:", person[1])

*– 튜플의 인덱싱을 통해 데이터를 출력합니다.*

[어려운 예]

기본 예시 (데모 코드):

contacts = {"Alice": "010-1234-5678", "Bob": "010-8765-4321"}
print(contacts)

단계 문제:

"딕셔너리에 새로운 연락처를 추가하고, 특정 이름으로 검색하는 코드를 작성해보세요."

해답 코드 및 설명:

contacts = {"Alice": "010-1234-5678", "Bob": "010-8765-4321"}
contacts["Charlie"] = "010-1111-2222"
name = input("검색할 이름을 입력하세요: ")
if name in contacts:
    print(name, "의 연락처:", contacts[name])
else:
    print("연락처가 없습니다.")

*– 딕셔너리의 데이터 추가 및 검색을 구현합니다.*

26차시: 실습 프로젝트 – 미니 데이터 분석 프로그램

목표: 앞서 배운 내용을 활용하여 데이터 분석 프로그램을 제작한다.

"데이터를 분석하여 의미 있는 정보를 추출하는 프로그램을 만들어봅니다."

[쉬운 예]

기본 예시 (데모 코드):

data = [10, 20, 30, 40]
total = sum(data)
print("합계:", total)

단계 문제:

"리스트 데이터의 평균을 계산하는 코드를 작성해보세요."

해답 코드 및 설명:

data = [10, 20, 30, 40]
average = sum(data) / len(data)
print("평균:", average)

*– 평균을 계산합니다.*

[중간 예]

기본 예시 (데모 코드):

data = [15, 25, 35, 45]
filtered = [x for x in data if x > 20]
print("필터링 결과:", filtered)

단계 문제:

"데이터를 조건에 따라 분류하여 출력하는 코드를 작성해보세요."

해답 코드 및 설명:

data = [15, 25, 35, 45]
high = [x for x in data if x > 30]
low = [x for x in data if x <= 30]
print("30보다 큰 값:", high)
print("30 이하의 값:", low)

*– 리스트 컴프리헨션을 사용합니다.*

[어려운 예]

기본 예시 (데모 코드):

def analyze(data):
    total = sum(data)
    average = total / len(data)
    return {"total": total, "average": average}
print(analyze([10, 20, 30, 40]))

단계 문제:

"여러 함수를 사용하여 데이터 분석의 각 단계를 분리해 구현하는 코드를 작성해보세요."

해답 코드 및 설명:

def calculate_total(data):
    return sum(data)

def calculate_average(data):
    return sum(data) / len(data)

def analyze(data):
    return {"total": calculate_total(data), "average": calculate_average(data)}

print(analyze([10, 20, 30, 40]))

*– 함수 분리를 통해 모듈화합니다.*

27차시: 인터랙티브 프로그램 개발 – 사용자 인터페이스 강화

목표: 사용자와 상호작용하는 텍스트 기반 프로그램을 구현한다.

"프로그램과 대화하듯 입력과 출력을 구현해봅시다."

[쉬운 예]

기본 예시 (데모 코드):

name = input("이름을 입력하세요: ")
print("안녕하세요,", name)

단계 문제:

"입력받은 이름을 사용하여 맞춤형 인사말을 출력하는 코드를 작성해보세요."

해답 코드 및 설명:

name = input("이름을 입력하세요: ")
print("반갑습니다,", name, "님!")

*– 사용자 입력으로 인사말을 출력합니다.*

[중간 예]

기본 예시 (데모 코드):

print("메뉴를 선택하세요:")
print("1. 게임 시작")
print("2. 설정")
choice = input("번호를 입력하세요: ")
if choice == "1":
    print("게임을 시작합니다.")
elif choice == "2":
    print("설정을 불러옵니다.")
else:
    print("잘못된 선택입니다.")

단계 문제:

"메뉴 선택 후 하위 메뉴 기능을 추가하는 코드를 작성해보세요."

해답 코드 및 설명:

print("메인 메뉴:")
print("1. 게임 시작")
print("2. 설정")
main_choice = input("번호를 입력하세요: ")
if main_choice == "1":
    print("게임 시작 메뉴:")
    print("1. 새 게임")
    print("2. 불러오기")
    sub_choice = input("번호를 입력하세요: ")
    if sub_choice == "1":
        print("새 게임을 시작합니다.")
    elif sub_choice == "2":
        print("저장된 게임을 불러옵니다.")
elif main_choice == "2":
    print("설정 메뉴: ...")
else:
    print("잘못된 선택입니다.")

*– 메인 메뉴와 하위 메뉴를 조건문으로 구성합니다.*

28차시: 프로젝트 통합 II – 종합 미니 프로젝트 설계

목표: 자신만의 프로젝트 아이디어를 구상하고 설계한다.

"이제 직접 프로젝트를 설계할 시간입니다. 창의적인 아이디어를 구상해보세요."

[쉬운 예]

기본 예시 (데모 코드):

# 예시: 간단한 계산기 프로젝트 설계
# 변수와 조건문을 활용하여 기본 로직을 구상합니다.

단계 문제:

"관심 있는 주제로 프로그램의 전체 흐름과 주요 기능을 목록으로 작성해보세요."

해답 코드 및 설명 (예시 답안):

# 계산기 프로젝트:
# 1. 사용자 입력 받기
# 2. 사칙연산 함수 작성
# 3. 결과 출력 및 에러 처리

*– 전체 흐름을 구상합니다.*

[중간 예]

기본 예시 (데모 코드):

# 예시: 간단한 연락처 관리 프로그램 설계
# 함수를 활용하여 데이터 입력, 수정, 삭제 기능을 구상합니다.

단계 문제:

"프로젝트에 필요한 기능 목록과 플로우 차트를 작성해보세요."

해답 코드 및 설명 (예시 답안):

# 연락처 관리 프로그램:
# 1. 연락처 추가
# 2. 연락처 삭제
# 3. 검색 및 수정
# 4. 전체 목록 출력

*– 기능 목록을 도식화합니다.*

[어려운 예]

기본 예시 (데모 코드):

# 예시: 텍스트 기반 어드벤처 게임 설계
# 전체 플로우를 구성하고 각 모듈의 역할을 정의합니다.

단계 문제:

"자신만의 프로젝트 설계서를 작성하고, 각 모듈의 역할과 구현 계획을 구체적으로 작성해보세요."

해답 코드 및 설명 (예시 답안):

# 어드벤처 게임 설계서:
# - 시작 모듈: 게임 시작 및 초기 변수 설정
# - 선택 모듈: 사용자 입력에 따른 스토리 분기
# - 전투 모듈: 체력, 점수 계산
# - 종료 모듈: 게임 종료 및 결과 출력

*– 각 모듈의 역할을 도식화하여 작성합니다.*

29차시: 프로젝트 통합 III – 코드 구현 및 테스트

목표: 설계한 프로젝트를 코드로 구현하고 테스트, 디버깅하여 완성도를 높인다.

"모든 것을 모아 프로젝트를 구현해보자. 오류를 수정하며 완성도를 높이는 과정이 중요합니다."

[쉬운 예]

기본 예시 (데모 코드):

# 프로젝트 일부 모듈 구현 예시
def module_part():
    print("모듈 기능 작동")
module_part()

단계 문제:

"자신의 프로젝트에서 한 모듈을 구현하고 테스트하는 코드를 작성해보세요."

해답 코드 및 설명 (예시 답안):

# 예시: 계산기 모듈
def add(a, b):
    return a + b
print(add(2, 3))

*– 간단한 모듈 구현 및 테스트입니다.*

[중간 예]

기본 예시 (데모 코드):

# 반복문과 조건문 결합 예제
def process_data(data):
    result = []
    for d in data:
        if d > 0:
            result.append(d)
    return result
print(process_data([1, -2, 3, -4]))

단계 문제:

"여러 모듈을 결합하여 데이터를 처리하는 코드를 작성해보세요."

해답 코드 및 설명:

def filter_positive(data):
    return [x for x in data if x > 0]

def calculate_sum(data):
    return sum(data)

data = [1, -2, 3, -4, 5]
positive = filter_positive(data)
total = calculate_sum(positive)
print("양수 리스트:", positive)
print("합계:", total)

*– 모듈 결합을 통해 데이터를 처리합니다.*

[어려운 예]

기본 예시 (데모 코드):

# 전체 프로젝트 구현 후 디버깅 예시
def complete_project():
    try:
        # 프로젝트 전체 로직
        print("프로젝트 실행 중...")
    except Exception as e:
        print("오류 발생:", e)
complete_project()

단계 문제:

"구현한 전체 프로젝트에서 발생하는 버그를 찾아 수정하고 개선하는 코드를 작성해보세요."

해답 코드 및 설명:

def complete_project():
    try:
        # 예시: 계산기 전체 기능 구현
        a = float(input("첫 번째 숫자: "))
        b = float(input("두 번째 숫자: "))
        op = input("연산 입력 (+, -, *, /): ")
        if op == "+":
            result = a + b
        elif op == "-":
            result = a - b
        elif op == "*":
            result = a * b
        elif op == "/":
            if b == 0:
                print("0으로 나눌 수 없습니다.")
                return
            result = a / b
        else:
            print("잘못된 연산")
            return
        print("결과:", result)
    except Exception as e:
        print("오류 발생:", e)
complete_project()

*– try-except로 오류를 처리하고 전체 로직을 구현합니다.*

30차시: 최종 프로젝트 발표 및 리뷰

목표: 최종 프로젝트 결과물을 발표하고, 전체 내용을 리뷰하며 개선점을 도출한다.

"최종 발표 시간입니다! 지금까지 배운 것을 자신 있게 발표하고, 서로 피드백하며 발전해봅시다."

[쉬운 예]

기본 예시 (데모 코드):

# 간단한 프로젝트 데모 예시
print("최종 프로젝트 데모 시작")
# 주요 코드 부분 설명

단계 문제:

"자신이 구현한 프로젝트의 핵심 기능을 정리하여 발표 자료를 준비해보세요."

해답 코드 및 설명 (예시 답안):

# 예시 답안:
# 내 프로젝트는 텍스트 기반 어드벤처 게임입니다.
# 주요 기능: 사용자 입력에 따른 스토리 분기, 체력과 점수 관리

*– 발표 자료에 핵심 기능과 코드 역할을 정리합니다.*

전체 코스 요약 및 추가 조언