1. 函数方法
import datetime
balance = 1000
account_log = []
def validate(func):
def wrapper(*args,**kwargs):
amount = str(args[0])
index = amount.index(".")
if len(amount) - index - 1 > 2:
print("输入格式有误,小数点后最多保留2位")
else:
func(*args,**kwargs)
return wrapper
@validate
def deposit(amount):
"""
存款操作
:param amount: 存入金额
:return: None
"""
global balance
balance += amount
write_log(amount,"存入")
@validate
def withdrawal(amount):
"""
取款
:param amount: 金额
:return: None
"""
global balance
if amount > balance:
print("余额不足")
else:
balance -= amount
write_log(amount,"取出")
def write_log(amount,type):
"""
写入日志
:param amount: 金额
:param type: 存入 或者是 取出
:return: None
"""
now = datetime.datetime.now()
create_time = now.strftime("%Y-%m-%d %H:%M:%S")
data = [create_time,type,amount,f"{balance:.2f}"]
account_log.append(data)
def print_log():
"""
查看流水
:return: None
"""
print(account_log)
def show_menu():
menu = """
操作菜单
0:退出
1:存款
2:取款
3:打印交易信息
"""
print(menu)
while True:
show_menu()
num = int(input("请根据菜单编号输入:"))
if num == 0:
print("您已退出系统")
break
elif num == 1:
print("存款")
amount = float(input("请输入存款金额"))
deposit(amount)
print(f"当前余额是{balance:.2f}")
elif num == 2:
print("取款")
amount = float(input("请输入取款金额"))
withdrawal(amount)
print(f"当前余额是{balance:.2f}")
elif num == 3:
print("查看记录")
print_log()
else:
print("输入有误")
2. 面向对象方法
import datetime
def validate(func):
def wrapper(self,*args,**kwargs):
amount = str(args[0])
index = amount.index(".")
if len(amount) - index - 1 > 2:
print("输入格式有误,小数点后最多保留2位")
else:
func(self,*args,**kwargs)
return wrapper
class Bank(object):
account_log = []
def __init__(self,name):
self.name = name
@validate
def deposit(self,amount):
user.balance += amount
self.write_log("存入",amount)
@validate
def withdrawal(self,amount):
if amount > user.balance:
print("余额不足")
else:
user.balance -= amount
self.write_log("取出",amount)
def write_log(self,type,amount):
now = datetime.datetime.now()
create_time = now.strftime("%Y-%m-%d %H:%M:%S")
data = [self.name,user.username,create_time,type,amount,f"{user.balance:.2f}"]
Bank.account_log.append(data)
class ZhaoShang(Bank):
def __init__(self,name):
self.name = name
class JianShe(Bank):
def __init__(self,name):
self.name = name
class User(object):
def __init__(self,username,balance):
self.username = username
self.balance = balance
def print_log(self):
print(Bank.account_log)
bank = ZhaoShang("招商银行股份有限公司")
user = User("andy",1000)
def show_menu():
menu = """
操作菜单
0:退出
1:存款
2:取款
3:打印交易信息
"""
print(menu)
while True:
show_menu()
num = int(input("请根据菜单编号输入:"))
if num == 0:
print("您已退出系统")
break
elif num == 1:
print("存款")
amount = float(input("请输入存款金额"))
bank.deposit(amount)
print(f"当前余额是{user.balance:.2f}")
elif num == 2:
print("取款")
amount = float(input("请输入取款金额"))
bank.withdrawal(amount)
print(f"当前余额是{user.balance:.2f}")
elif num == 3:
print("查看记录")
user.print_log()
else:
print("输入有误")