Python使用函数封装简易ATM(V1.0)https://mp.csdn.net/mp_blog/creation/editor/127511047该文章的代码是在V1.0的基础上进行升级,使得功能更加完善
print('*********** 欢迎使用智汇ATM ***********')
print('1.注册 2.登录 3.查询余额 4.存款 5.转账 6.取款 7.退卡')
#定义一个列表,存放用户注册信息
users_list=[{'user':'admin01','user_password':'123456','balance':3000},
{'user':'admin02','user_password':'234567','balance':5000},
]
#定义一个空列表,存放用户登录信息
user_status=[]
#用户注册(输入1进入此功能)
def user_register():
while True:
register_name=input('请输入用户名:') #定义一个登录名变量
for i in users_list:
if register_name ==i['user']:
print(f'用户已存在,无法注册')
break
else:
register_password=input('请输入密码:') #定义一个登录密码变量
if len(register_password) !=6: #如果登录密码长度不为6
print('密码格式错误,密码长度为6位字符')
continue
else:
#把注册信息以字典的形式存放到user_list列表中
users_list.append({'user':register_name,'user_password':register_password,'balance':0})
print('恭喜您注册成功')
print(users_list)
return
#用户登录(输入2进入此功能)
def user_login():
while True:
login_name=input('请输入用户名:')
login_password=input('请输入密码:')
for j in users_list:
if login_name==j['user'] and login_password==j['user_password']:
global user_status #定义一个全局变量user_status
user_status = j #把j(登录用户) 赋值给user_status
print(f'恭喜您登录成功,当前登录用户名是:',user_status['user'])
return
else:
print(f'用户名或密码输入错误,请重新输入')
continue
#用户查询余额(输入3进入此功能)
def user_check():
if user_status:
print(f'你当前的余额是:',user_status['balance'])
else:
print(f'请先登录后再查询余额')
#用户存款(输入4进入此功能)
def user_deposit():
while True:
if user_status:
deposit_money=input('请输入您的存款金额:') #定义一个存款金额变量
if len(deposit_money) >2 and deposit_money[-2:]=='00' and int(deposit_money):
print('存款成功')
user_status['balance']+=int(deposit_money) #存款余额 = 存款余额+存款金额
print(f'当前账户余额:',user_status['balance'])
else:
print('存款失败,请重新操作')
continue
else:
print(f'请先登录,然后进行存款')
return True
#用户转账(输入5进入此功能)
def user_transfer():
while True:
if user_status:
transfer_user=input('请输入您需要转账的用户名:') #定义一个其他用户变量
for i in users_list:
if transfer_user==i['user'] and transfer_user !=user_status['user'] :
transfer_money=input('请输入您需要转账的金额:')
if int(transfer_money) > user_status['balance']: #转账金额不能超过余额
print(f'转账金额超过余额,请重新操作')
return
else:
if len(transfer_money)>2 and transfer_money[-2:]=='00' and int(transfer_money):
print(f'转账成功')
user_status['balance'] -=int(transfer_money) #存款余额 递减转账金额
print(f'当前存款余额:',user_status['balance'])
for i in users_list:
if transfer_user ==i['user']:
i['balance']+=int(transfer_money) #对方账户余额 递增转账金额
print(f'当前对方的余额:',i['balance'])
return
else:
print(f'转账金额有误,请重新操作')
return
else:
print(f'未找到该用户,请重新输入!!')
else:
print(f'请先登录,然后进行转账')
return True
#用户取款(输入6进入此功能)
def user_withdrawals():
while True:
if user_status:
withdrawals_money=input('请输入您的取款金额:') #定义一个取款金额变量
if int(withdrawals_money) > user_status['balance']: #取款金额不能超过存款余额
print(f'取款金额超过余额')
else:
if len(withdrawals_money)>2 and withdrawals_money[-2:]=='00' and int(withdrawals_money):
print(f'您当前取款金额:{withdrawals_money}',)
user_status['balance'] -=int(withdrawals_money) #存款余额 递减取款金额
print(f'当前用户存款余额:',user_status['balance'])
return
else:
print(f'输入金额格式有误,请重新操作')
else:
print('请先登录,然后进行取款')
break
#用户退卡
def user_exit():
if user_status:
exit_num=int(input('是否确认退卡\n1-是 2-否\n'))
if exit_num==1:
print(f'退卡成功')
return
elif exit_num==2:
print(f'已取消退卡')
else:
print(f'输入序号有误,请重新操作')
else:
print('您还未登录,无需退卡')
while True:
num=int(input('请输入您选择的功能序号:'))
if num==1:
print(f'****欢迎使用注册****')
user_register() #用户注册调用函数
elif num==2:
print(f'***欢迎登录智汇ATM***')
user_login() #用户登录调用函数
elif num==3:
print(f'***欢迎使用查询余额功能***')
user_check() #用户余额查询调用函数
elif num==4:
print(f'***欢迎使用存款功能***')
user_deposit() #用户存款调用函数
elif num==5:
print(f'***欢迎使用转账功能***')
user_transfer() #用户转账调用函数
elif num==6:
print(f'***欢迎使用取款功能***')
user_withdrawals() #用户取款调用函数
elif num==7:
user_exit()
else:
print(f'功能序号输入有误,请重新操作')