티스토리 뷰
목차
프로그램은 직접 실습하지 않으면 절대 실력이 늘지 않습니다. 저는 지금도 후임 개발자들에게 회사에서 작성하는 프로그램으로 만족하지 말고 개인 프로젝트를 진행하고 많이 개발을 해보라고 조언을 합니다. 개발은 절대 눈으로 짜는것으로 실력이 늘지 않습니다. 그럼 지금까지 배운 변수, 조건문, 반복문, 함수, 클래스를 모두 종합하여 실습할 수 있는 예제 프로그램을 몇 가지 만들어 보았습니다. 이 예제들은 지금까지 학습한 모든 개념을 활용하여 실제로 어떻게 프로그램을 구성하는지 경험할 수 있도록 설계되었습니다. 단계별로 난이도를 설정했으니, 하나씩 풀어보시면서 Python 프로그래밍에 익숙해지시면 좋습니다. 절대 잊지 마세요. 반드시 실습을 직접 해보시길 권해드립니다.
실습 1: 간단한 학생 관리 프로그램
문제 설명:
- Student 클래스를 정의하여, 이름과 점수를 속성으로 갖는 객체를 생성하세요.
- 점수에 따라 성적을 출력하는 메서드 **get_grade()**를 추가하세요.
- 90점 이상은 'A', 80점 이상은 'B', 70점 이상은 'C', 60점 이상은 'D', 그 외는 'F'를 반환합니다.
- 여러 학생들의 점수를 입력받고, 그 학생들의 이름과 성적을 출력하세요.
요구 사항:
- 변수를 사용하여 학생의 데이터를 저장.
- 조건문을 사용하여 성적을 판단.
- 반복문을 사용하여 여러 학생의 성적을 처리.
- 함수를 사용하여 성적 계산 로직을 작성.
- 클래스를 사용하여 학생 데이터를 관리.
예시 코드:
class Student:
def __init__(self, name, score):
self.name = name
self.score = score
def get_grade(self):
if self.score >= 90:
return 'A'
elif self.score >= 80:
return 'B'
elif self.score >= 70:
return 'C'
elif self.score >= 60:
return 'D'
else:
return 'F'
# 학생 관리 함수
def manage_students():
students = []
num_students = int(input("학생 수를 입력하세요: "))
for _ in range(num_students):
name = input("학생 이름을 입력하세요: ")
score = int(input(f"{name}의 점수를 입력하세요: "))
student = Student(name, score)
students.append(student)
print("\n학생 성적표:")
for student in students:
print(f"{student.name}: {student.get_grade()}")
# 프로그램 실행
manage_students()
출력 예시:
학생 수를 입력하세요: 3
학생 이름을 입력하세요: 철수
철수의 점수를 입력하세요: 85
학생 이름을 입력하세요: 영희
영희의 점수를 입력하세요: 92
학생 이름을 입력하세요: 민수
민수의 점수를 입력하세요: 77
학생 성적표:
철수: B
영희: A
민수: C
실습 2: 쇼핑 카트 프로그램
문제 설명:
- Item 클래스를 정의하고, 아이템의 이름과 가격을 속성으로 가지는 객체를 생성하세요.
- ShoppingCart 클래스를 정의하고, add_item() 메서드로 쇼핑 카트에 물건을 추가하고, get_total() 메서드로 총 금액을 계산하세요.
- 여러 아이템을 쇼핑 카트에 추가한 뒤, 총 금액을 출력하세요.
요구 사항:
- 변수를 사용하여 아이템의 이름과 가격을 저장.
- 조건문을 사용하여 특정 조건에 따라 할인 적용.
- 반복문을 사용하여 카트에 여러 물건을 추가.
- 함수를 사용하여 카트 계산 로직을 작성.
- 클래스를 사용하여 아이템과 카트를 관리.
예시 코드:
class Item:
def __init__(self, name, price):
self.name = name
self.price = price
class ShoppingCart:
def __init__(self):
self.items = []
def add_item(self, item):
self.items.append(item)
def get_total(self):
total = 0
for item in self.items:
total += item.price
return total
# 쇼핑 카트 관리 함수
def shopping_cart_program():
cart = ShoppingCart()
while True:
name = input("아이템 이름을 입력하세요 (종료하려면 '끝' 입력): ")
if name == "끝":
break
price = float(input(f"{name}의 가격을 입력하세요: "))
item = Item(name, price)
cart.add_item(item)
print(f"\n총 금액: {cart.get_total()}원")
# 프로그램 실행
shopping_cart_program()
출력 예시:
아이템 이름을 입력하세요 (종료하려면 '끝' 입력): 사과
사과의 가격을 입력하세요: 1000
아이템 이름을 입력하세요 (종료하려면 '끝' 입력): 바나나
바나나의 가격을 입력하세요: 2000
아이템 이름을 입력하세요 (종료하려면 '끝' 입력): 끝
총 금액: 3000원
실습 3: 간단한 은행 시스템
문제 설명:
- BankAccount 클래스를 정의하고, 고객의 이름과 잔액을 속성으로 가집니다.
- deposit() 메서드를 통해 입금을 처리하고, withdraw() 메서드를 통해 출금을 처리하세요.
- 잔액이 부족할 경우 출금이 불가능하도록 조건문을 사용하세요.
- 고객이 원하는 작업(입금/출금)을 선택하여 수행하고, 최종 잔액을 출력하세요.
요구 사항:
- 변수를 사용하여 잔액과 거래 내역을 저장.
- 조건문을 사용하여 잔액 부족 여부 확인.
- 반복문을 사용하여 여러 거래를 처리.
- 함수를 사용하여 입금/출금 로직을 분리.
- 클래스를 사용하여 은행 계좌를 관리.
예시 코드:
class BankAccount:
def __init__(self, name, balance=0):
self.name = name
self.balance = balance
def deposit(self, amount):
self.balance += amount
print(f"{amount}원이 입금되었습니다. 현재 잔액: {self.balance}원")
def withdraw(self, amount):
if amount > self.balance:
print("잔액이 부족합니다.")
else:
self.balance -= amount
print(f"{amount}원이 출금되었습니다. 현재 잔액: {self.balance}원")
# 은행 시스템 관리 함수
def bank_system():
name = input("고객님의 이름을 입력하세요: ")
account = BankAccount(name)
while True:
print("\n1. 입금\n2. 출금\n3. 종료")
choice = int(input("원하는 작업을 선택하세요: "))
if choice == 1:
amount = float(input("입금할 금액을 입력하세요: "))
account.deposit(amount)
elif choice == 2:
amount = float(input("출금할 금액을 입력하세요: "))
account.withdraw(amount)
elif choice == 3:
print("프로그램을 종료합니다.")
break
else:
print("잘못된 선택입니다.")
# 프로그램 실행
bank_system()
출력 예시:
고객님의 이름을 입력하세요: 철수
1. 입금
2. 출금
3. 종료
원하는 작업을 선택하세요: 1
입금할 금액을 입력하세요: 5000
5000원이 입금되었습니다. 현재 잔액: 5000원
1. 입금
2. 출금
3. 종료
원하는 작업을 선택하세요: 2
출금할 금액을 입력하세요: 3000
3000원이 출금되었습니다. 현재 잔액: 2000원
1. 입금
2. 출금
3. 종료
원하는 작업을 선택하세요: 3
프로그램을 종료합니다.
실습 4: 도서 관리 시스템
문제 설명:
- Book 클래스를 정의하고, 책의 제목(title)과 저자(author)를 속성으로 가집니다.
- Library 클래스를 정의하고, 책을 추가할 수 있는 add_book(), 모든 책을 출력하는 list_books() 메서드를 작성하세요.
- 여러 책을 도서관에 추가한 뒤, 현재 도서 목록을 출력하세요.
요구 사항:
- 변수를 사용하여 도서 데이터를 저장.
- 반복문을 사용하여 여러 책을 추가.
- 함수를 사용하여 도서 목록 관리 로직을 분리.
- 클래스를 사용하여 책과 도서관을 관리.
예시 코드:
class Book:
def __init__(self, title, author):
self.title = title
self.author = author
class Library:
def __init__(self):
self.books = []
def add_book(self, book):
self.books.append(book)
print(f"{book.title}이(가) 추가되었습니다.")
def list_books(self):
print("\n현재 도서 목록:")
for book in self.books:
print(f"제목: {book.title}, 저자: {book.author}")
# 도서 관리 시스템 함수
def library_system():
library = Library()
while True:
title = input("책 제목을 입력하세요 (종료하려면 '끝' 입력): ")
if title == "끝":
break
author = input("저자를 입력하세요: ")
book = Book(title, author)
library.add_book(book)
library.list_books()
# 프로그램 실행
library_system()
출력 예시:
책 제목을 입력하세요 (종료하려면 '끝' 입력): 파이썬 배우기
저자를 입력하세요: 홍길동
파이썬 배우기이(가) 추가되었습니다.
책 제목을 입력하세요 (종료하려면 '끝' 입력): 끝
현재 도서 목록:
제목: 파이썬 배우기, 저자: 홍길동
실습 5: 간단한 게임 프로그램
문제 설명:
- Player 클래스를 정의하고, 이름과 체력(health)을 속성으로 가집니다.
- take_damage() 메서드를 추가하여 플레이어가 데미지를 받을 때 체력이 감소하게 하세요.
- 플레이어의 체력이 0 이하가 되면 "플레이어가 쓰러졌습니다"를 출력하세요.
- 플레이어가 공격을 받을 때마다 데미지를 받으며, 반복문을 통해 체력이 0이 될 때까지 게임을 진행하세요.
요구 사항:
- 변수를 사용하여 체력과 데미지를 저장.
- 조건문을 사용하여 체력이 0이 되었는지 확인.
- 반복문을 사용하여 공격을 반복적으로 처리.
- 함수를 사용하여 게임 로직을 분리.
- 클래스를 사용하여 플레이어를 관리.
예시 코드:
class Player:
def __init__(self, name, health):
self.name = name
self.health = health
def take_damage(self, damage):
self.health -= damage
if self.health > 0:
print(f"{self.name}이(가) {damage} 데미지를 받았습니다. 남은 체력: {self.health}")
else:
print(f"{self.name}이(가) 쓰러졌습니다.")
# 게임 진행 함수
def game():
name = input("플레이어의 이름을 입력하세요: ")
player = Player(name, 100)
while player.health > 0:
damage = int(input("받은 데미지를 입력하세요: "))
player.take_damage(damage)
# 프로그램 실행
game()
출력 예시:
플레이어의 이름을 입력하세요: 철수
받은 데미지를 입력하세요: 30
철수이(가) 30 데미지를 받았습니다. 남은 체력: 70
받은 데미지를 입력하세요: 50
철수이(가) 50 데미지를 받았습니다. 남은 체력: 20
받은 데미지를 입력하세요: 30
철수이(가) 쓰러졌습니다.
요약
위 실습 문제들은 Python에서 배운 모든 개념인 변수, 조건문, 반복문, 함수, 클래스를 종합적으로 활용할 수 있는 다양한 시나리오를 다룹니다. 이를 통해 다음과 같은 개념을 연습할 수 있습니다:
- 변수: 데이터를 저장하고 활용하는 방법.
- 조건문: 특정 조건에 따라 프로그램 흐름을 제어하는 방법.
- 반복문: 여러 데이터를 처리하거나, 반복적인 작업을 수행하는 방법.
- 함수: 프로그램을 모듈화하여 재사용성과 가독성을 높이는 방법.
- 클래스: 객체지향 프로그래밍을 통해 데이터와 동작을 구조화하는 방법.
이 예제들을 직접 풀어보시면서 각 개념을 하나의 프로그램에 통합하여 사용하는 연습을 할 수 있습니다.