Skip to content

Instantly share code, notes, and snippets.

@hanjae-jea
Last active August 6, 2022 05:53
Show Gist options
  • Save hanjae-jea/2a374bdccd8a096aa30e2cac1539d856 to your computer and use it in GitHub Desktop.
Save hanjae-jea/2a374bdccd8a096aa30e2cac1539d856 to your computer and use it in GitHub Desktop.
# 1 객체 생성 확인
try:
my = Account("제한재", "2231")
print("채점 #1 : 객체 생성 ✅")
except:
print("채점 #1 : 객체 생성 ❌")
# 2 통장 번호 확인
try:
qid = my.getId()
if 100000 <= qid < 1000000:
print("채점 #2 : 통장 번호 ✅")
else:
raise Exception()
except:
print("채점 #2 : 통장 번호 ❌")
# 3 mangling 정보 확인
exc = False
try:
bal = my.balance
exc = True
except:
pass
try:
qid = my.id
exc = True
except:
pass
try:
history = my.history
exc = True
except:
pass
if exc:
print("채점 #3 : 노출되면 안되는 정보 ❌")
else:
print("채점 #3 : 노출되면 안되는 정보 ✅")
try:
s = str(my)
if s == f"계좌번호:{my.getId()} 계좌주:제한재 잔액:0":
print("채점 #4 : 문자열 함수 ✅")
else:
raise Exception()
except:
print("채점 #4 : 문자열 함수 ❌")
print("채점 중단")
exit()
try:
my.deposit(10000)
s = str(my)
if s == f"계좌번호:{my.getId()} 계좌주:제한재 잔액:10000" and my.record()[0] == "입금 10000":
print("채점 #5 : 입금 함수 ✅")
else:
raise Exception()
except:
print("채점 #5 : 입금 함수 ❌")
try:
my.deposit(0)
li = my.record()
if len(li) == 1:
print("채점 #6 : 0원일때 입금 처리 ✅")
else:
raise Exception()
except:
print("채점 #6 : 0원일때 입금 처리 ❌")
try:
my.deposit(-100)
li = my.record()
if len(li) == 1:
print("채점 #7 : 음수일때 입금 처리 ✅")
else:
raise Exception()
except:
print("채점 #7 : 음수일때 입금 처리 ❌")
def stobalance(s):
return int(s.split(' ')[2].split(':')[1])
try:
my.withdraw(100, "2222")
li = my.record()
if len(li) == 1 and stobalance(str(my)) == 10000:
print("채점 #8 : 출금할 때 비밀번호 처리 ✅")
else:
raise Exception()
except:
print("채점 #8 : 출금할 때 비밀번호 처리 ❌")
try:
my.withdraw(1000, "2231")
li = my.record()
if len(li) == 2 and stobalance(str(my)) == 9000:
print("채점 #9 : 출금 처리 ✅")
else:
raise Exception()
except:
print("채점 #9 : 출금 처리 ❌")
try:
li = my.record()
if len(li) == 2 and li[0] == "입금 10000" and li[1] == "출금 1000":
print("채점 #10 : 레코드 처리 ✅")
else:
raise Exception()
except:
print("채점 #10 : 레코드 처리 ❌")
try:
before = (len(my.record()), stobalance(str(my)))
my.withdraw(99999, "2231")
after = (len(my.record()), stobalance(str(my)))
if before[0] == after[0] or before[1] == after[1]:
print("채점 #11 : 출금 금액이 더 큰 경우 처리 ✅")
else:
raise Exception()
except:
print("채점 #11 : 출금 금액이 더 큰 경우 처리 ❌")
try:
hana = Bank()
hani = hana.create_account("하니", "3231")
if hana.totalAccount() == 1:
print("채점 #12 : Bank에 계좌 추가개설 ✅")
else:
raise Exception()
except:
print("채점 #12 : Bank에 계좌 추가개설 ❌")
try:
if hani.name == "하니" and id(hani) == id(hana.getAccount(hani.getId())):
print("채점 #13 : create_account 에서 인스턴스 리턴 ✅")
else:
raise Exception()
except:
print("채점 #13 : create_account 에서 인스턴스 리턴 ❌")
try:
hana.deposit(hani.getId(), 10000)
if stobalance(str(hani)) == 10000:
print("채점 #14 Bank 의 deposit 함수 ✅")
else:
raise Exception()
except:
print("채점 #14 Bank 의 deposit 함수 ❌")
try:
hana.deposit(hani.getId() - 100, 100)
if stobalance(str(hani)) == 10000:
print("채점 #15 : 계좌번호 틀렸을 때 처리 ✅")
else:
raise Exception()
except:
print("채점 #15 : 계좌번호 틀렸을 때 처리 ❌")
try:
yuri = hana.create_account("유리", "1232")
if hana.totalAccount() == 2 and yuri.getId() != hani.getId():
print("채점 #16 : 여러개 계좌 생성 ✅")
else:
raise Exception()
except:
print("채점 #16 : 여러개 계좌 생성 ❌")
try:
hana.deposit(yuri.getId(), 30000)
hana.withdraw(yuri.getId(), 1000, "1232")
if stobalance(str(yuri)) == 29000:
print("채점 #17 : Bank에서 출금처리 ✅")
else:
raise Exception()
except:
print("채점 #17 : Bank에서 출금처리 ❌")
from typing import List, Optional
class Account:
def __init__(self, name: str, password: str):
from random import randint
self.name = name
self.__password = password
self.__balance: int = 0
self.__id: int = randint(100000, 999999)
self.__history: List[str] = []
def getId(self) -> int:
return self.__id
def __str__(self):
return f"계좌번호:{self.__id} 계좌주:{self.name} 잔액:{self.__balance}"
def deposit(self, money: int):
if money <= 0:
return
self.__history.append(f"입금 {money}")
self.__balance += money
def record(self):
return self.__history
def withdraw(self, money: int, password: str):
if self.__password != password:
return
if money <= 0:
return
if self.__balance < money:
return
self.__balance -= money
self.__history.append(f"출금 {money}")
class Bank:
def __init__(self):
self.__accounts: List[Account] = []
def create_account(self, name, pwd):
self.__accounts.append(Account(name, pwd))
return self.__accounts[-1]
def deposit(self, id: int, money: int):
for account in self.__accounts:
if account.getId() == id:
account.deposit(money)
break
else:
print('계좌가 없습니다')
def withdraw(self, id: int, money: int, password: str):
for account in self.__accounts:
if account.getId() == id:
account.withdraw(money, password)
break
else:
print('계좌가 없습니다')
def getAccount(self, id: int) -> Optional[Account]:
for account in self.__accounts:
if account.getId() == id:
return account
return None
def totalAccount(self) -> int:
return len(self.__accounts)
@hanjae-jea
Copy link
Author

ㅇㅇㅇㅇ

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment