728x90
반응형
이전 내용
예제. 클래스 문법 활용하기 (+ 은행 계좌)
클래스 문법을 활용하여 Bank_account 클래스를 만들고 그 안에 계좌 생성(생성자), 입금, 출금, 송금, 잔액 확인의 기능을 하는 메서드를 추가하라.
class Bank_account:
def __init__(self, balance=0):
self.__balance = balance # balance 속성 외부에서 접근 불가
print("-"*10, "계좌가 생성되었습니다.", "-"*10)
def deposit(self, amount):
print(f"입금 메뉴 - 현재 잔액: [{self.getBalance()}원]")
amount = int(input("입금 금액을 입력해 주세요 (숫자만): "))
if amount <= 0:
print("입금 가능한 금액이 아닙니다.")
else:
self.__balance += amount
print(f"계좌에 {amount}원이 입금되었습니다.")
def withdraw(self, amount):
print(f"출금 가능 잔액: [{self.getBalance()}원]")
amount = int(input("출금 금액을 입력해 주세요 (숫자만): "))
if amount > self.__balance:
print("잔액이 모자라 출금할 수 없습니다.")
else:
self.__balance -= amount
print(f"계좌에서 {amount}원이 출금되었습니다.")
def sendMoney(self, amount):
print(f"송금 가능 잔액: [{self.getBalance()}원]")
amount = int(input("송금 금액을 입력해 주세요 (숫자만): "))
if amount > self.__balance:
print("잔액이 모자라 송금할 수 없습니다.")
else:
self.__balance -= amount
receiver = input("송금하실 분의 이름을 입력해 주세요: ")
print(f"계좌에서 {amount}원이 {receiver}님께 송금되었습니다.")
print(f"송금 후 잔액: [{self.getBalance()}원]")
def getBalance(self):
return self.__balance
# 인스턴스 생성
customer_1 = Bank_account()
customer_1.deposit(500)
customer_1.withdraw(200)
customer_1.sendMoney(100)
print(f"현재 잔액: [{customer_1.getBalance()}]")
예제 Develop1. ATM 기능을 하는 메서드 추가
기존의 Bank_account 클래스에 ATM 기능을 하는 main() 메서드를 추가한다.
class Bank_account:
def __init__(self, balance=0):
self.__balance = balance # balance 속성 외부에서 접근 불가
# print("-"*10, "계좌가 생성되었습니다.", "-"*10)
def deposit(self):
print(f"입금 메뉴 - 현재 잔액: [{self.getBalance()}원]")
amount = int(input("입금 금액을 입력해 주세요 (숫자만): "))
if amount <= 0:
print("입금 가능한 금액이 아닙니다.")
else:
self.__balance += amount
print(f"계좌에 {amount}원이 입금되었습니다.")
def withdraw(self):
print(f"출금 가능 잔액: [{self.getBalance()}원]")
amount = int(input("출금 금액을 입력해 주세요 (숫자만): "))
if amount > self.__balance:
print("잔액이 모자라 출금할 수 없습니다.")
else:
self.__balance -= amount
print(f"계좌에서 {amount}원이 출금되었습니다.")
def sendMoney(self):
print(f"송금 가능 잔액: [{self.getBalance()}원]")
amount = int(input("송금 금액을 입력해 주세요 (숫자만): "))
if amount > self.__balance:
print("잔액이 모자라 송금할 수 없습니다.")
else:
self.__balance -= amount
receiver = input("송금하실 분의 이름을 입력해 주세요: ")
print(f"계좌에서 {amount}원이 {receiver}님께 송금되었습니다.")
print(f"송금 후 잔액: [{self.getBalance()}원]")
def getBalance(self):
return self.__balance
def display_menu(self):
print("1. 계좌 생성")
print("2. 입금")
print("3. 출금")
print("4. 송금")
print("5. 잔액 확인")
print("6. 종료")
menu = int(input("메뉴를 선택해 주세요: "))
return menu
def main(self):
while True:
try:
menu = self.display_menu()
if menu == 1:
name = input("이름을 입력해 주십시오.: ")
print(f"{name}님, 계좌가 생성되었습니다.")
elif menu == 2:
self.deposit()
elif menu == 3:
self.withdraw()
elif menu == 4:
self.sendMoney()
elif menu == 5:
print(f"현재 잔액: [{self.getBalance()}원]")
elif menu == 6:
print("프로그램을 종료합니다.")
break
except ValueError:
print("잘못된 숫자를 입력하였습니다.")
finally:
print("저희 은행을 이용해 주셔서 감사합니다.")
a = Bank_account()
a.main()
ATM의 기능을 하는 main() 메서드는 앞서 만든 입금, 출금, 송금, 잔액 확인 등의 기능을 할 수 있도록 연결하고, 메뉴는 display_menu() 메서드를 통해 보여지며, 여기서 input 값을 받아 menu라는 변수에 저장해 main() 메서드로 연결되도록 하였다.
예제 Develop2. 클래스 상속 활용하기
앞서 만든 Bank_account 클래스 중 ATM 역할을 하는 메서드들을 따로 빼서 Bank_account 클래스를 상속한 ATM 클래스로 만들어라.
class Bank_account:
def __init__(self, balance=0):
self.__balance = balance # balance 속성 외부에서 접근 불가
# print("-"*10, "계좌가 생성되었습니다.", "-"*10)
def deposit(self):
print(f"입금 메뉴 - 현재 잔액: [{self.getBalance()}원]")
amount = int(input("입금 금액을 입력해 주세요 (숫자만): "))
if amount <= 0:
print("입금 가능한 금액이 아닙니다.")
else:
self.__balance += amount
print(f"계좌에 {amount}원이 입금되었습니다.")
def withdraw(self):
print(f"출금 가능 잔액: [{self.getBalance()}원]")
amount = int(input("출금 금액을 입력해 주세요 (숫자만): "))
if amount > self.__balance:
print("잔액이 모자라 출금할 수 없습니다.")
else:
self.__balance -= amount
print(f"계좌에서 {amount}원이 출금되었습니다.")
def sendMoney(self):
print(f"송금 가능 잔액: [{self.getBalance()}원]")
amount = int(input("송금 금액을 입력해 주세요 (숫자만): "))
if amount > self.__balance:
print("잔액이 모자라 송금할 수 없습니다.")
else:
self.__balance -= amount
receiver = input("송금하실 분의 이름을 입력해 주세요: ")
print(f"계좌에서 {amount}원이 {receiver}님께 송금되었습니다.")
print(f"송금 후 잔액: [{self.getBalance()}원]")
def getBalance(self):
return self.__balance
# Bank_account 클래스 상속한 ATM 클래스 생성
class ATM(Bank_account):
def display_menu(self):
print("1. 계좌 생성")
print("2. 입금")
print("3. 출금")
print("4. 송금")
print("5. 잔액 확인")
print("6. 종료")
menu = int(input("메뉴를 선택해 주세요: "))
return menu
def main(self):
while True:
try:
menu = self.display_menu()
if menu == 1:
name = input("이름을 입력해 주십시오.: ")
print(f"{name}님, 계좌가 생성되었습니다.")
elif menu == 2:
self.deposit()
elif menu == 3:
self.withdraw()
elif menu == 4:
self.sendMoney()
elif menu == 5:
print(f"현재 잔액: [{self.getBalance()}원]")
elif menu == 6:
print("프로그램을 종료합니다.")
break
except ValueError:
print("잘못된 숫자를 입력하였습니다.")
finally:
print("저희 은행을 이용해 주셔서 감사합니다.")
# 인스턴스 생성
customer_1 = ATM()
customer_1.main()
위의 코드를 실행해보면
동작이 잘 되는 것을 확인할 수 있다.
다음 내용
728x90
반응형
'[파이썬 Projects] > <파이썬 기초>' 카테고리의 다른 글
[파이썬] 넘파이 보완 - 불리언 값, 배열 전치 , 내적 (2) | 2025.01.24 |
---|---|
[파이썬] 파이썬 기초 - 주사위 보드 게임 만들기 (0) | 2025.01.24 |
[파이썬] 파이썬 기초 - 클래스 보완 (0) | 2025.01.22 |
[파이썬] 파이썬 기초 - 예외 처리 보완 (0) | 2025.01.21 |
[파이썬] 파이썬 기초 - 파일 복사, 디렉토리 (0) | 2025.01.21 |