파이썬 중급 문풀을 끝냈다. 이번에는 실습을 먼저 내가 만들어보고 수업을 듣는 식으로 해서 시간이 오래 걸렸다. 그러나 확실히 좀더 클래스를 만드는 것이 능숙해졌다. 유익한 시간이였다.
실습 중에 예외처리에 관한 것과 파일 입출력에 관한 것을 남겨둔다.
import bank_class as bc
hanaBank = bc.BankWork()
name = input('통장 개설을 위한 예금주 입력 :')
myAccount = bc.BankAccount(hanaBank, name)
hanaBank.addAccount(myAccount)
anwer = int(input('1. 입금, 2. 출금, 3. 종료 '))
while anwer != 3:
if anwer == 1:
hanaBank.deposit(myAccount)
elif anwer == 2:
try:
hanaBank.withdraw(myAccount)
except bc.LackMoneyError as e:
print(e)
finally:
hanaBank.printMeney(myAccount)
anwer = int(input('1. 입금, 2. 출금, 3. 종료 '))
import random
class BankAccount:
def __init__(self, bank, name):
self.bank = bank
self.name = name
self.number = random.randint(10000,99999)
self.money = 0
while bank.isAccount(self.number):
self.number = random.randint(10000,99999)
bank.addAccount(self)
self.printAccountInfo()
def printAccountInfo(self):
print('='*50)
print(f'name : {self.name}')
print(f'account number : {self.number}')
print(f'money : {self.money}')
print('=' * 50)
class BankWork:
def __init__(self):
self.accounts = {}
def isAccount(self,num):
return num in self.accounts
def addAccount(self, u):
self.accounts[u.number] = u
def deposit(self, u):
self.printMeney(u)
m = int(input('입금액 입력 : '))
print(f'{m}원 입금합니다.')
self.accounts[u.number].money += m
self.printMeney(u)
def withdraw(self, u):
self.printMeney(u)
m = int(input('출금액 입력 : '))
print(f'{m}원 출금합니다.')
if self.accounts[u.number].money >= m:
self.accounts[u.number].money -= m
else:
raise LackMoneyError()
def printMeney(self,u):
print('=' * 40)
print(f'현재 잔액은 {self.accounts[u.number].money}원 입니다.')
print('=' * 40 + '\n')
class LackMoneyError(Exception):
def __init__(self):
super().__init__('잔액이 부족하여 출금하지 못하였습니다.')
import boatSchedule as bs
center = bs.boatSchduleCenter()
b1 = bs.boat(center, 'bo1', 3, 'fruits')
b2 = bs.boat(center, 'bo2', 4, 'fishes')
b3 = bs.boat(center, 'bo3', 5, 'vegetables')
center.fileRW(center.calMaxday())
import math
import datetime
class boat:
def __init__(self,bt, n, dt, p):
self.name = n
self.dayterm = int(dt)
self.product = p
self.num = len(bt.boats)
bt.addBoat(self)
class boatSchduleCenter:
def __init__(self):
self.boats = {}
def addBoat(self, b):
self.boats[b.num] = b
def calMaxday(self):
dt = 1
for i in self.boats:
dt = math.lcm(dt,self.boats[i].dayterm)
return dt
def fileRW(self,num):
basetime = datetime.datetime(2022, 1, 1, 10, 0, 0)
with open('/Users/nary_macbook/Documents/pythonex/project/arrive.txt','a') as f:
f.write(f'2022년 모든 선박 입항일\n')
f.write(f'{basetime}\n')
nexttime = basetime + datetime.timedelta(days=num)
while True:
with open('/Users/nary_macbook/Documents/pythonex/project/arrive.txt', 'a') as f:
f.write(f'{nexttime}\n')
nexttime = nexttime + datetime.timedelta(days=num)
if nexttime.year > 2022:
break