cuteyuchen
2019-07-21 18:52初学python,一个很简单的ATM系统,出现的问题是退卡不能成功
初学python,一个很简单的ATM系统,出现的问题是退卡不能成功,因为num_6 函数不能返回or_login=False,怎么解决?求大佬们帮忙
#coding=utf-8
#Version:python3.6.3
#Tools:pycharm 2017.3.2
__date__ = '2019/7/20 10:56'
__author__ = 'Yuchen'
# 12、定义一个列表分别存储5个用户账户信息(账号,密码,余额,卡片类型),该列表用来充当临时数据库,通过控制台实现ATM登陆,存款,取款,账户密码修改,账户信息查询,退卡 功能
def return_menu(input_num):
if input_num==0:
menu()
def num_1():
cost_money = int(input('请输入为100倍数的取款金额,返回上级菜单请输入“0”:'))
return_menu(cost_money)
while cost_money % 100 != 0 or cost_money < 0:
cost_money = int(input('输入金额格式错误,请输入为100倍数的取款金额,返回上级菜单请输入“0”:'))
return_menu(cost_money)
if cost_money % 100 == 0 and cost_money > 0:
break
while cost_money > infors[account_num]["money"]:
cost_money = int(input('余额不足,请重新输入,返回上级菜单请输入“0”:'))
return_menu(cost_money)
if cost_money <= infors[account_num]["money"]:
break
infors[account_num]["money"] -= cost_money
def num_2():
save_money = int(input('请输入为100倍数的存款金额,返回上级菜单请输入“0”:'))
return_menu(save_money)
while save_money % 100 != 0 or save_money < 0:
save_money = int(input('输入金额格式错误,请输入为100倍数的存款金额:'))
return_menu(save_money)
if save_money % 100 == 0:
break
infors[account_num]["money"] += save_money
def num_3():
print("余额为:", end=" ")
print(infors[account_num]["money"])
def num_4():
print("密码修改")
password_xiugai = input('请输入将要修改的密码,返回上级菜单请输入“0”:')
return_menu(password_xiugai)
infors[account_num]["password"] = password_xiugai
print("密码修改成功!")
def num_5():
print("账户信息为:")
print(infors[account_num])
def nun_6(or_login):
print('请取卡')
or_login=False
def menu():
print('请选择对应的服务项目编号1(取款),2(存款), 3(余额查询), 4(密码修改), 5(账户信息查询), 6(退卡)')
num = int(input('请输入'))
if num == 1:
num_1()
elif num == 2:
num_2()
# print(infors)
elif num == 3:
num_3()
elif num == 4:
num_4()
elif num == 5:
num_5()
elif num == 6:
nun_6()
or_login=False
else:
print('编号错误,请重新输入')
infors = [
{'account':'123', 'password':'123', 'money':10000, 'kind':'金卡'},
{'account':'222', 'password':'123', 'money':10000, 'kind':'金卡'},
{'account':'333', 'password':'123', 'money':10000, 'kind':'金卡'}
]
list_account=[]
or_login = False
while True:
password_wrong_count=0
if not or_login:
account = input('请输入账号')
or_exist = False
for infor in infors:
if account in list_account:
print("您的账户已被锁定,请到银行解锁!!!")
break
else:
if infor.get('account') == account:
or_exist = True
while True:
password = input('请输入密码')
if infor.get('password') == password:
or_login = True
account_num = 0
for account_num in range(len(infors)):
if infors[account_num].get("account") == account:
# print(account_num)
break
break
else:
password_wrong_count+=1
if password_wrong_count==3:
or_login=False
print("输入密码错误超过三次,您的银行卡已经被锁定,请到银行解锁!")
list_account.append(account)
break
else:
print('密码错误,请重新输入')
break
if not or_exist:
print('暂未查到该用户信息')
else:
menu()
- 点赞
- 回答
- 收藏
- 复制链接分享
1条回答
为你推荐
- 初学python,一个很简单的ATM系统,出现的问题是退卡不能成功
- python
- 1个回答