로딩 중이에요... 🐣
[코담]
웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트
01 미니프로젝트 자기소개 생성기 | ✅ 저자: 이유정(박사)
프로젝트 코드명: SELF_INTRO_GEN_PY_v1
프로젝트 유형: 복습을 위한 미니 프로젝트
코드명: SELF_INTRO_GEN_PY_v1
자기소개 (Self Introduction) : SELF_INTRO
Generator (생성기) 또는 Generation : GEN
사용언어 Python: PY
버전 번호 : v1
🖥️ 프로젝트 개요
본 프로젝트는 사용자의 이름, 나이, 취미 정보를 입력받아
포맷팅된 자기소개 카드를 콘솔에 출력하는 Python 기초 문법 종합
실습 과제입니다.
이 프로젝트를 통해 다음 내용을 자연스럽게 적용합니다:
- 입력/처리/출력의 흐름 제어
- 변수 선언 및 네이밍 규칙 준수
- 표현식, 문장, 주석, 연산자, 자료형, 출력 포맷 등의 실전 활용
최종 출력은 사용자의 입력값을 바탕으로 조건문과 리스트 처리 기능을 포함한 구조화된 메시지 형태로 완성되어야 합니다.
📄 기능 요구사항 (Functional Requirements)
기능 번호 ...... | 기능 설명 | 세부 설명 |
---|---|---|
FR-01 | 사용자 입력 수집 ............. | 이름, 나이, 취미를 input() 으로 입력받음 |
FR-02 | 변수 저장 및 가공 | 입력값을 적절한 식별자에 저장하고, 필요 시 형 변환 수행 |
FR-03 | 출력 포맷 구성 | 자기소개 카드를 f-string 기반 포맷으로 구성 |
FR-04 | 조건 분기 처리 | 나이에 따라 성인/미성년자를 분기 출력 |
FR-05 | 주석 작성 | 코드 흐름에 맞는 설명 주석 최소 3개 이상 작성 |
FR-06 | 심화 기능 1 | 취미를 리스트로 분해 후 포맷팅 (split , strip , join ) |
FR-07 | 심화 기능 2 | 내년 나이를 계산하여 출력 (+1 ) |
FR-08 | 심화 기능 3 | 첫 번째 취미 항목을 별도로 강조 출력 |
FR은 보통 Feature Requirement(기능 요구사항)를 줄여서 쓰는 약어라, 개발 문서나 실제 회사 프로젝트에서도 저렇게 FR-01 , FR-02 식으로 관리합니다. |
📄 비기능 요구사항 (Non-Functional Requirements)
항목 | 세부 설명 |
---|---|
코드 스타일 | - 식별자 규칙 준수 (키워드 사용 금지) <br>- snake_case 또는 camelCase 네이밍 컨벤션 적용 |
에러방지처리 ...... | 숫자 입력 오류 등으로 코드가 중단되지 않도록 int() 변환 위치 명확히 처리 |
코드 가독성 | - 한 줄에 너무 많은 로직 지양 <br>- 주석 / 들여쓰기 / 공백 규칙 준수 |
출력 디자인 | - ===== 구분선 포함 <br>- 사용자 친화적 표현 사용 <br>- f-string 기반 구조 유지 |
🔀 작업 가이드
1️⃣ 사용자 입력 처리
- 이름, 나이, 취미 입력
- 나이는 정수형으로 형 변환
- 취미는 쉼표로 구분된 문자열 입력 → 리스트로 처리
2️⃣ 데이터 가공
- 취미 리스트 처리 (
split + strip + join
) - 내년 나이 계산 (
user_age + 1
) - 첫 번째 취미 추출 (
hobby_list[0]
)
3️⃣ 출력 포맷 구성
- 출력 내용은 다음 양식을 참고하여 구성할 것:
===== 자기소개 카드 =====
이름: 이은희
나이: 25살
취미: 독서, 여행
안녕하세요, 이은희입니다.
25살이고, 독서, 여행을 좋아합니다!
💡 성인입니다.
# 심화 미션
💬 내년이면 25살이 됩니다!
⭐ 특히 좋아하는 취미는 여행입니다!
=========================
===== 자기소개 카드 =====
이름: 김지민
나이: 18살
취미: 게임, 음악 감상, 여행
안녕하세요, 김지민입니다.
18살이고, 게임, 음악 감상, 여행을 좋아합니다!
💡 미성년자입니다.
# 심화 미션
💬 내년이면 19살이 됩니다!
⭐ 특히 좋아하는 취미는 게임입니다!
=========================
📚 문법 사용 체크리스트
배운 내용 | 프로젝트 코드에 이렇게 녹아들어야 합니다 |
---|---|
표현식 (Expression) | input() , user_age + 1 같은 계산식, 문자열 가공 |
문장 (Statement) | x = input() , print() , if 등의 "행동" |
키워드 (Keywords) | if , else , def (선택 시), class 는 사용 금지 확인 등 |
식별자 (Identifiers) | user_name , user_age 같은 올바른 변수명 작성 |
주석 (Comment) | 최소 3개 이상의 설명용 주석 작성 |
산술 연산자 (Arithmetic Operators) | 나이 입력을 숫자로 바꿔서, + , - , // 같은 계산 활용 가능 |
비교 연산자 (Comparison Operators) | 나이(user_age >= 20 )를 비교해서 성인/미성년자 분기 |
논리 연산자 (Logical Operators) | 필요 시 여러 조건을 and , or 로 연결 (선택 과제) |
대입 연산자 (Assignment Operators) | = , += 같은 값 저장 및 갱신 작업 |
자료형 (Data types) | 문자열(str), 숫자(int) 적절히 구분 |
print 함수 (print()) | 여러 가지 포맷팅(sep , end , f-string )을 활용해서 출력 |
✅ 정답:
# 사용자로부터 기본 정보를 입력받습니다 (문자열로 입력됨)
user_name = input("이름을 입력하세요: ")
user_age = input("나이를 입력하세요: ")
user_hobby = input("취미를 입력하세요 (여러 개 입력 시 쉼표로 구분): ")
# 주석: 입력받은 나이를 정수형(int)으로 변환합니다
user_age = int(user_age) # 문자열 -> 숫자형 변환 (표현식)
# 주석: 본격적으로 자기소개 카드를 출력합니다
print("\n===== 자기소개 카드 =====")
print(f"이름: {user_name}")
print(f"나이: {user_age}살")
print(f"취미: {user_hobby}\n")
print(f"안녕하세요, {user_name}입니다.")
print(f"{user_age}살이고, {user_hobby}를 좋아합니다!")
# 주석: 나이가 20살 이상이면 성인, 아니면 미성년자로 분기 처리합니다
if user_age >= 20: # 비교연산자 사용
print("💡 성인입니다.")
else:
print("💡 미성년자입니다.")
print("=========================")
✅ 정답: 심화 미션
# 사용자에게 이름, 나이, 취미를 입력받습니다
user_name = input("이름을 입력하세요: ")
user_age = int(input("나이를 입력하세요: ")) # 숫자로 변환 (표현식)
user_hobby = input("취미를 입력하세요 (쉼표로 구분): ")
# 입력받은 취미 문자열을 리스트로 변환하고, 각 항목의 공백 제거
hobby_list = user_hobby.split(",") # 리스트로 쪼개기
hobby_list = [h.strip() for h in hobby_list] # 각 취미 앞뒤 공백 제거
formatted_hobby = ", ".join(hobby_list) # 다시 문자열로 조합
# 내년 나이 계산 (산술 연산자 사용)
next_year_age = user_age + 1 # 표현식 + 대입연산자
# 출력
print("\n===== 자기소개 카드 =====")
print(f"이름: {user_name}")
print(f"나이: {user_age}살")
print(f"취미: {formatted_hobby}\n")
print(f"안녕하세요, {user_name}입니다.")
print(f"{user_age}살이고, {formatted_hobby}를 좋아합니다!")
# 나이에 따른 분기 (비교연산자 + 논리 흐름)
if user_age >= 20:
print("💡 성인입니다.")
else:
print("💡 미성년자입니다.") # 18살이면 이 문장 출력
# 내년 나이 출력
print(f"💬 내년이면 {next_year_age}살이 됩니다!")
# 첫 번째 취미 강조
print(f"⭐ 특히 좋아하는 취미는 {hobby_list[0]}입니다!")
print("=========================")