Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
Tags
- 선태구조
- 병렬컴퓨팅
- Python Programming
- 디지털회로
- 디지털
- 분산켬퓨팅
- 2진수
- 병렬연산
- 알고리즘
- 클라우드컴퓨팅
- 데이터구조
- 자료구조
- 컴퓨팅사고력
- 비트
- 아스키코드
- 그리드컴퓨팅
- 컴퓨팅
- 바이너리
- 분산처리
- 반복구조
- 회로
- 쉘스크립트
- 데이터
- Python
- 이진수
- 컴퓨터
- 순차구조
- 병렬처리
- 분산컴퓨팅
- 배시쉘
Archives
- Today
- Total
데브로맨스
【 PYTHON 】 실습 - 직원 정보 데이터 만들어보기 본문
>반응형
Python 기초 문법 - 데이터 다루기
실습: 직원 정보 데이터 만들어보기
학습 목표
본 실습을 통해 다음 내용을 익히게 됩니다:
- 사전(Dictionary)과 리스트(List)를 사용한 복합데이터 구조 이해
- 실제 업무에서 자주 쓰이는 직원정보 관리 방법
- 데이터 생성 → 조회 → 수정의 기본 CRUD 작업
- 실무형 코드 스타일 적용
왜 직원 정보 데이터가 중요한가?
직장에서 사용하는 인사관리시스템, 급여명세서, 팀 배정 등 거의 모든 HR 업무에 직원정보가 필요합니다. 이를 프로그래밍으로 표현하면 다음과 같은 특징이 있습니다:
| 특성 | 예시 |
|---|---|
| 다양한 항목 | 이름, 부서, 연령, 급여 등 |
| 일대일 대응 | "홍길동"이라는 사람은 하나의 정보셋만 가져야 함 |
| 복수 데이터 관리 | 100명 이상의 직원이 존재함 |
데이터 구조 설계
Python에서는 다음과 같은 자료구조를 결합해 복잡한 데이터를 만들 수 있습니다:
# 직원 정보 템플릿(데이터 틀)
employee_template = {
"id": "", # 고유 식별자
"name": "", # 이름
"department": "", # 소속 부서
"position": "", # 직책
"salary": 0.0, # 연봉(수치형)
"is_active": True # 근무 여부(논리형)
}
# 실제 데이터 예시
employee1 = {
"id": "E1001",
"name": "김지원",
"department": "개발팀",
"position": "SE",
"salary": 65000000,
"is_active": True
}
팁: 사전(Dictionary)은 "레이블:값" 쌍으로 데이터를 저장하는 방식입니다. 이는 실제 노트에 항목을 메모해두는 것과 같죠.
실습: 직원 정보 데이터베이스 생성
기본 데이터셋 만들기
# 빈 직원 목록 초기화
employees = []
# 샘플 데이터 추가
employees.append({
"id": "E1001",
"name": "박지현",
"department": "개발팀",
"position": "프론트엔드 개발자",
"salary": 72000000,
"is_active": True
})
employees.append({
"id": "E1002",
"name": "최민지",
"department": "디자인팀",
"position": "UI 디자이너",
"salary": 68000000,
"is_active": True
})
employees.append({
"id": "E1003",
"name": "이서현",
"department": "마케팅팀",
"position": "MD",
"salary": 62000000,
"is_active": False
})
# 결과 확인
print("직원 수:", len(employees))데이터 조회 방법
# 모든 직원 보기
print("=== 전체 직원 목록 ===")
for emp in employees:
print(f"ID: {emp['id']}, 이름: {emp['name']}, 부서: {emp['department']}")
print("- 연봉:", emp['salary'])
print("- 근무 여부:", emp['is_active'])
print("---")
# 특정 조건 조회(활성 상태만 보기)
print("\n=== 활동 중인 직원 ===")
for emp in employees:
if emp['is_active']:
print(f"✅ {emp['name']}({emp['department']})")
# ID로 특정 사람 찾기
def find_employee(emp_id):
for emp in employees:
if emp['id'] == emp_id:
return emp
return None
found = find_employee("E1002")
print("\n=== 조회 결과 ===")
if found:
print(f"발견됨! {found['name']}, 부서: {found['department']}")
else:
print("미발견")데이터 수정 및 관리
정보 업데이트
# 직원 정보 수정
def update_employee(emp_id, new_data):
for emp in employees:
if emp['id'] == emp_id:
# 기존 값과 새 값 병합
emp.update(new_data)
return True
return False
# 실습
update_employee("E1001", {"salary": 75000000, "position": "팀장"})
update_employee("E1003", {"is_active": True})
# 변경 사항 확인
for emp in employees:
if emp['id'] == "E1001" or emp['id'] == "E1003":
print(f"_UPDATED_: {emp['name']}, 연봉: {emp['salary']}, 상태: {emp['is_active']}")추가 기능 예시
# 비활성 직원 계산
inactive_count = sum(1 for emp in employees if not emp['is_active'])
print("휴직/퇴사자 수:", inactive_count)
# 연봉 순 정렬
sorted_by_salary = sorted(
employees,
key=lambda x: x['salary'],
reverse=True
)
print("\n=== 고액 연봉자 ===")
for emp in sorted_by_salary[:3]:
print(f"{emp['name']}: {emp['salary']:,.0f}원")주요 기능 요약표
| 기능 | 사용 방법 | 설명 |
|---|---|---|
| 추가 | append() |
리스트 끝에 데이터 추가 |
| 검색 | 반복문/조건식 | ID 또는 필터링 조건 사용 |
| 수정 | update() 메서드 |
기존 항목 값 변경 |
| 삭제 | remove() 또는 del |
특정 항목 제거 |
| 필터링 | 리스트 컴프리헨션 | 조건에 맞는 데이터 추출 |
| 정렬 | sorted() |
key 매개변수로 기준 설정 |
실습 과제
- 데이터 추가: 새로운 직원 2명을
employees리스트에 추가해보세요 - 쿼리 연습: "개발팀"에 속한 직원만 추출하는 함수를 작성하세요
- 보고서 생성: 활동 중인 직원의 평균 연봉을 계산하는 프로그램을 만드세요
- 데이터 검증: ID 중복이 없는지 확인하는 유효성 체크 기능 추가
# 과제 예시 스타트코드
def add_new_employee():
new_id = input("아이디 입력: ")
# 중복 검사 로직 구현필요
add_new_employee()핵심 팁 정리
| 항목 | 추천 사항 |
|---|---|
| 키 이름 | 영어 대시(camelCase 또는 snake_case 사용) |
| 데이터 저장 | 관련된 정보를 하나의 사전에 묶기 |
| 상태 관리 | True/False, "활성"-"비활성" 등 일관된 표현 사용 |
| 오류 처리 | 존재하지 않는 ID 접근 시 예외 처리 권장 |
반응형
Comments