[코담]
웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트
미니프로젝트2 | ✅저자: 이유정(박사)
프로젝트 코드명: `AUTO_TXT_REPO_GEN_PY_v2
프로젝트 유형: 복습을 위한 미니 프로젝트
코드명: AUTO_TXT_REPO_GEN_PY_v2
텍스트 리포트 자동(Automatic text report): AUTO_TXT_REPO
Generator (생성기) 또는 Generation : GEN
사용언어 Python: PY
버전 번호 : v2
🖥️ 프로젝트 개요
본 프로젝트는 사용자의 이름, 나이, 이메일, 연락처 정보를 입력받아
자동으로 포맷팅된 텍스트 리포트를 생성하여 콘솔에 출력하는 Python
기초 문법 종합 실습 과제입니다.
◽ 이 프로젝트를 통해 다음 내용을 자연스럽게 적용합니다:
- 입력/처리/출력의 흐름 제어
- 변수 선언 및 네이밍 규칙 준수
- 표현식, 문장, 주석, 자료형 변환, 산술/비교/논리 연산자 활용
- 문자열 메서드(대소문자 변환, 공백 제거, 문자열 찾기, 문자열 자르기) 실습
- 예외 처리(ValueError, IndexError) 및 안전한 입력 처리
- 출력 포맷(f-string 및 format 함수) 설계
최종 출력은 사용자의 입력값을 바탕으로 문자열 분석, 연산 결과, 형식 검증을 수행하여 조건문과 리스트 처리 기능을 포함한 구조화된 리포트 형태로 완성되어야 합니다.
📄 기능 요구사항 (Functional Requirements)
기능 ID .... | 기능 설명 | 세부 내용 |
---|---|---|
FR-01 | 사용자 입력 수집 | 이름, 나이, 이메일, 휴대폰 번호 입력받기 |
FR-02 | 입력값 분석 | 문자열의 길이, 구성 체크, 형식 분석 등 수행 |
FR-03 | 문자열 처리 | strip, upper, lower, split, find, count 등 사용 |
FR-04 | 숫자 연산 처리 | 나이 기반 사칙연산, 제곱, 나머지 계산 등 포함 |
FR-05 | 복합 대입 연산 사용 ............ | 나이에 +1, *2 등의 누적 연산 적용 |
FR-06 | 포맷팅 출력 | format() 또는 f-string 활용하여 정보 요약 출력 |
FR-07 | 예외 처리 구현 | 나이 입력이 정수가 아닐 경우 ValueError 처리, 인덱스 접근 시 IndexError 처리 |
FR-08 | 요약 리포트 출력 | 처리된 결과를 카드 형태로 출력 |
📄 비기능 요구사항 (Non-Functional
항목 | 설명 |
---|---|
코드 스타일 | 주석 5줄 이상, 적절한 식별자명, 들여쓰기 준수 |
가독성 | 줄바꿈, 시각적 구조화, 공백 정리 |
에러 핸들링 | ValueError, IndexError 최소 1회 처리 |
출력 포맷 | 텍스트 기반 리포트 구조 유지 (구분선 포함) |
🔀 작업가이드
1️⃣ 사용자 입력 처리
- 이름, 나이, 이메일, 연락처를 입력받기
- 나이는 정수형으로 형 변환 (
int()
) - 이메일은 '@'를 기준으로 ID와 도메인 분리 처리 (
split("@")
) - 연락처는 문자열 그대로 입력받고 나중에 포맷 가공
2️⃣ 데이터 가공
- 이름을 모두 대문자로 변환 (
upper()
) - 이름 길이 구하기 (
len()
) - 이름의 첫 글자 추출 (
name[0]
) - 나이에 5를 더한 값 계산 (
user_age + 5
) - 나이 제곱값 계산 (
user_age ** 2
) - 나이를 4로 나눈 몫과 나머지 계산 (
//
,%
) - 이메일 ID 길이 계산 (
len(id_part)
) - 연락처 문자열에서 국번과 개인번호 추출 (
split("-")
또는 인덱싱)
3️⃣ 데이터 검증 및 예외 처리
- 나이 입력이 숫자가 아닐 경우
ValueError
처리 - 이메일 입력에 '@'가 없을 경우
IndexError
처리
4️⃣ 리포트 출력 구성
- 구분선(
=====
) 삽입 - 이름/나이/취미/이메일/연락처 요약 출력
- 분석 결과(문자열 길이, 도메인, 나이 계산 결과 등) 포함
- 사용자 친화적 메시지 추가 (예: "데이터 분석 완료!")
5️⃣ 출력 포맷 구성
- 출력 내용은 다음 양식을 참고하여 구성할 것:
===== 사용자 정보 리포트 =====
이름: EUNICE
이름 길이: 6자
첫 글자: E
나이: 20살
5년 후 나이: 25살
나이 제곱: 400
나이를 4로 나눈 몫: 5, 나머지: 0
이메일 도메인: naver.com
이메일에 '@' 포함 여부: True
이메일 ID 길이: 9자
연락처: 010-1234-5678
국번: 1234
개인번호 끝자리: 5678
💡 데이터 분석 완료!
============================