记录代码是假的,寻求帮助是真的
在添加装饰器前没有问题,基础不够有了bug
仔细检查后也没发现哪个对象错误调用,先在此记录,避免不了了之
import datetime
#import prettytable as pt
Balance = 10000
account_log = []
def validate(func):
"""
装饰器函数
:param func: 接受任何参数:元组、字典
:return: wrapper(装饰器)
"""
def wrapper(*args,**kwargs): #接受任何参数:元组、字典
amount = str(args[0]) #改变为字符串格式
# 123.456 index('.')
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("错误")

图:报错情况