Last active
August 6, 2022 05:53
-
-
Save hanjae-jea/2a374bdccd8a096aa30e2cac1539d856 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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에서 출금처리 ❌") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
ㅇㅇㅇㅇ