미션의 목적
흩어진 프롬프트를 다루는 콘솔 프로그램을 Python으로 만들며, 기초 문법을 실제 기능에 연결하고 Git으로 작업 이력을 남깁니다. 목표는 단순히 코드를 완성하는 것이 아니라 작동 원리와 변경 이력을 설명할 수 있는 것입니다.
Python 3.10+, VS Code, Git, GitHub 연결을 확인
GitHub 저장소와 로컬 저장소를 연결하고 첫 커밋·푸시
리스트·딕셔너리와 함수로 프롬프트 관리 기능을 순차 구현
목록 기능을 별도 브랜치에서 만들고 main에 병합
10개 이상 기능 단위 커밋, README, 실행 및 Git 이력 증빙
필수 기능 범위
- 프롬프트 추가 및 빈 입력 검증
- 전체 목록, 카테고리별 조회, 키워드 검색
- 번호를 이용한 상세 보기
- 즐겨찾기 추가·해제 및 즐겨찾기 목록
- 잘못된 메뉴·번호 입력 안내 후 메뉴로 복귀
핵심 제약과 범위
- 필수 기능은 Python 기본 문법으로 구현
- 이전 미션의 프롬프트 3개 이상을 기본 데이터로 준비
- 데이터는 실행 중 유지하고, 종료 시 초기화해도 됨
- 최소 10개 의미 있는 커밋과 브랜치 생성·병합
- 선택 JSON 영속화·CRUD·사용 기록
의존성 기반 실행 계획
정해진 시간은 없으므로 학습자 속도에 맞춰 쪼개세요. 한 번에 완성 코드를 제공하기보다 작은 실행 가능한 단위마다 확인합니다.
Python 3.10 이상, Git 버전·사용자 정보, VS Code 실행, GitHub 로그인 확인. 검증: Hello 출력과 버전 화면을 확인합니다.
GitHub 저장소 생성, 로컬 폴더 초기화, .gitignore·README 작성, 원격 연결 후 push. 공개 샘플 저장소를 clone해 구조와 log도 살펴봅니다.
기본 프롬프트 3개 이상을 리스트 안 딕셔너리로 표현하고, 메뉴 반복·종료·잘못된 입력 처리를 만듭니다. 각 작은 기능을 실행해 확인합니다.
추가 → 전체 목록(기능 브랜치) → 카테고리 → 검색 → 상세 보기 → 즐겨찾기 순으로 구현합니다. 각 기능에서 정상·경계 입력을 시험합니다.
목록 기능 브랜치를 커밋하고 main에 merge합니다. README, 저장소 공개 상태, 커밋 그래프와 실행 화면 증빙을 최종 점검합니다.
구현 순서를 정하는 기준
메뉴와 데이터가 기능들의 공통 기반입니다. 먼저 프로그램이 실행되고 데이터에 접근하는 흐름을 만든 다음, 데이터를 읽는 기능에서 데이터를 바꾸는 기능으로 확장합니다.
권장 기능 단위 커밋 예
feat: add initial prompt data
feat: add menu loop and exit option
feat: validate prompt inputs
feat: implement category filtering
docs: add setup and usage guide
예시는 방향을 보여주는 용도입니다. 실제 커밋 메시지는 학습자가 변경 내용에 맞춰 작성하도록 합니다.
프로그램·코드 확인
Git·제출 증빙 확인
체크 상태는 이 브라우저에 자동 저장됩니다.
제출 전 대조하기
| 제출물 | 확인할 증거 | 흔한 누락 |
|---|---|---|
| GitHub 저장소 | 접근 가능한 URL, 코드와 README | 저장소는 만들었지만 로컬 코드 push 누락 |
| 개발 환경 | VS Code, Python 버전, Git 설정 화면 | 버전만 있고 user.name/email 설정 증거 없음 |
| 프로그램 실행 | 메뉴, 추가, 목록, 검색 결과 화면 | 일부 기능만 캡처하거나 실행 맥락이 불명확 |
| 작업 이력 | git log --oneline --graph와 병합 기록 | 커밋 개수만 채우고 변경 의도가 드러나지 않음 |
지식 · 공부해야 할 것
- Python 실행과 터미널에서 버전 확인 — 환경을 스스로 점검하기 위해
- 변수·문자열·조건문·while 반복 — 메뉴와 사용자 입력 흐름 구성에 사용
- 리스트·딕셔너리 — 여러 프롬프트와 각 항목 속성을 표현
- 함수와 매개변수 — 기능 책임을 나누고 반복 코드를 줄임
- Git의 저장소·스테이징·커밋·브랜치·병합 — 변경을 안전하게 기록하고 통합
- GitHub 원격 저장소와 clone/push/pull — 로컬 작업을 원격과 주고받음
기술 · 할 수 있어야 할 것
- VS Code에서 Python 파일 작성·실행 및 오류 위치 확인
- 메뉴 입력을 검증하고 반복·종료 흐름 구현
- 딕셔너리의 키로 프롬프트 정보에 접근하고 리스트를 순회
- 조건에 맞는 항목 필터링, 대소문자·부분 문자열 검색
- 잘못된 번호·빈 결과·빈 입력 같은 경계 상황 처리
- 변경을 작은 커밋으로 남기고 기능 브랜치를 병합
이해 · 설명할 수 있어야 할 것
- 리스트 하나에 여러 딕셔너리를 담는 이유와 각 자료구조의 역할
- 메뉴를 while로 반복하는 이유와 종료 조건
- 기능별 함수 분리 기준과 데이터가 함수 사이에서 공유되는 방식
- 검색에서 제목과 내용을 어떻게 검사하는지, 검색 범위가 무엇인지
- 기능 단위 커밋·브랜치가 변경 이력과 협업에 주는 이점
- 현재 데이터가 종료 후 사라지는 이유와 JSON 저장이 추가하는 설계
구두 점검 질문
학습자 주도 퍼실리테이션
질문 → 학습자 설명 → 작은 실험 → 실행 결과 확인 순으로 진행합니다. 막히면 답을 먼저 주기보다 문제를 더 작게 쪼개고 다음 행동을 선택하게 합니다.
시작 전 · 경험과 목표 연결하기
유도 방향: 실사용 상황에서 기능 요구를 뽑고, 이전 미션 프롬프트 3개를 예시 데이터로 가져오게 합니다.
환경·Git · 도구의 상태를 스스로 확인하게 하기
유도 방향: 화면을 대신 조작하지 않고 학습자가 직접 버전·설정을 확인합니다. 계정 정보나 이메일은 화면 공유 시 노출하지 않도록 안내합니다.
자료구조·함수 · 코드를 말로 모델링하기
유도 방향: 제목·내용·카테고리·즐겨찾기 필드를 학습자가 정의하도록 합니다. 리스트와 딕셔너리의 역할을 실제 데이터 예시로 구분합니다.
디버깅 · 오류 메시지를 관찰 가능한 단서로 바꾸기
유도 방향: 에러 전문 확인 → 입력·변수 확인 → 최소 재현 → 수정 후 동일 입력 재시험. 원인을 말로 설명하기 전에는 큰 코드 재작성으로 넘어가지 않습니다.
회고 · 기능과 이력을 설명하게 하기
유도 방향: 시연과 설명을 함께 평가하고, 다음 단계의 확장(파일 저장·수정/삭제)을 지금 필수 범위와 구분하도록 합니다.
막힘 수준별 개입
| 막힘 | 목표를 한 동작으로 축소하고 입력·기대 결과를 말하게 합니다. |
|---|---|
| 진행 지연 | 우선순위를 필수 기능에 고정하고 보너스 범위를 미룹니다. |
| 오류 반복 | 최소 입력으로 재현하고 오류 줄·변수 값을 함께 관찰합니다. |
| 완성 빠름 | 예외 입력, 중복 제목 정책, JSON 영속화의 설계 trade-off를 질문합니다. |
세션 메모
학습자가 막힌 지점, 직접 해결한 전략, 다음 확인 질문을 기록합니다. 내용은 현재 브라우저에 저장됩니다.
메모는 입력할 때 자동 저장됩니다.
오류를 함께 진단하는 순서
입력과 실행 순서를 기록해 같은 문제가 다시 발생하는지 확인
전체 오류 메시지, 오류 줄, 해당 변수의 실제 값 확인
원인 후보를 하나만 정하고 왜 그런지 설명
작게 수정한 뒤 실패 입력과 정상 입력 모두 다시 시험
자주 만나는 상황
| 상황 | 확인할 것 | 학습자에게 던질 질문 |
|---|---|---|
| Python 명령을 찾을 수 없음 | 설치 여부, 터미널 재시작, 인터프리터 선택 | “어떤 명령을 실행했고, 터미널은 어떤 결과를 보여주나요?” |
| 메뉴가 한 번만 나오거나 무한 반복 | while 조건, 종료 분기, 입력값 비교 타입 | “각 메뉴 선택 후 다음에 실행되는 줄은 어디인가요?” |
| 잘못된 번호에서 인덱스 오류 | 입력 범위 검증이 리스트 접근보다 먼저인지 | “리스트에 접근하기 전 유효한 번호를 확인하나요?” |
| 검색이 일부 항목만 놓침 | 제목·내용 모두 검사하는지, 대소문자 처리 방식 | “검색 조건이 제목과 내용에 각각 어떻게 적용되나요?” |
| 즐겨찾기 상태가 반대로 보임 | 토글 전후 Boolean 값과 출력 조건 | “변경 전후 값을 한 건에 대해 추적해 볼까요?” |
| push/merge 거부 또는 충돌 | 현재 브랜치, 원격 변경, 충돌 파일과 표시 구간 | “어떤 변경이 겹쳤는지 확인하고, 해결 후 무엇으로 검증할까요?” |
| 실행 종료 후 데이터가 사라짐 | 요구사항상 정상 동작인지, 보너스 영속화인지 | “필수 요구와 선택 보너스의 범위를 구분해 볼까요?” |