Fork me on GitHub
# 1、函数对象优化多分支if的代码练熟
'''
func_dic={
'0':'drop_out(退出)',
'1':'login(登录)',
'2':'transfer(转账)',
'3':'check_banlance(查询余额)',
'4':'withdraw(提现)',
'5':'register(注册)'
}
while True:
print("""
0 退出
1 登录
2 转账
3 查询余额
4 提现
5 注册
""")
cmd=input('请输入命令编号(纯数字):').strip()
if not cmd.isdigit():
print('必须输入纯数字!')
continue
elif cmd == '0':
break
elif cmd in func_dic:
print(func_dic[cmd])
else:
print('输入的指令不存在!')
'''
'''
def login():
print('登录')

def transfer():
print('转账')

def check_banlance():
print('查询余额')

def withdraw():
print('提现')

def register():
print('注册')
func_dic = {
'0': ['退出', None],
'1': ['登录', login],
'2': ['转账', transfer],
'3': ['查询余额', check_banlance],
'4': ['提现', withdraw],
'5': ['注册', register]
}
while True:
for k in func_dic:
print(k,func_dic[k][0])
cmd=input('请输入命令编号(纯数字):').strip()
if not cmd.isdigit():
print('必须输入纯数字!')
continue
elif cmd == '0':
break
elif cmd in func_dic:
func_dic[cmd][1]()
else:
print('输入的指令不存在!')
'''
'''
def login():
print('登录')

def transfer():
print('转账')

def check_banlance():
print('查询余额')

def withdraw():
print('提现')

def register():
print('注册')
func_dic = {
'0': ['退出', exit],
'1': ['登录', login],
'2': ['转账', transfer],
'3': ['查询余额', check_banlance],
'4': ['提现', withdraw],
'5': ['注册', register]
}
while True:
for k in func_dic:
print(k,func_dic[k][0])
cmd=input('请输入命令编号(纯数字):').strip()
if not cmd.isdigit():
print('必须输入纯数字!')
continue
elif cmd in func_dic:
func_dic[cmd][1]()
else:
print('输入的指令不存在!')
'''
# 2、编写计数器功能,要求调用一次在原有的基础上加一
# 温馨提示:
# I: 需要用到的知识点:闭包函数 + nonlocal
# II: 核心功能如下:
#
# def counter():
# x += 1
# return x
#
# 要求最终效果类似
# print(couter()) # 1
# print(couter()) # 2
# print(couter()) # 3
# print(couter()) # 4
# print(couter()) # 5
'''
l = ['0']
with open('count.txt', 'rt', encoding='utf-8') as f:
for line in f:
l[0]=str(line)
def counts():
x = int(l[0])
def counter():
nonlocal x
x += 1
return x
counter()
l[0]=str(x)
with open('count.txt', 'wt', encoding='utf-8') as f1:
for line in l:
f1.write(line)
print(l[0])

counts()
counts()
counts()
'''
# ====================周末作业====================
# 编写ATM程序实现下述功能,数据来源于文件db.txt
# 0、注册功能:用户输入账号名、密码、金额,按照固定的格式存入文件db.txt
'''
def user():
username = input('请输入用户名称: ').strip()
password = input('请输入用户密码: ').strip()
r_password = input('请确认用户密码: ').strip()
if password == r_password:
print(f'[{username}]注册成功')
count=input('请输入存款金额:')
with open('db.txt',mode='at',encoding='utf-8') as f1:
f1.write('{}:{}:{}'.format(username,password,count))
else:
print('注册失败!')

user()
'''
# 1、登录功能:用户名不存在,要求必须先注册,用户名存在&输错三次锁定,登录成功后记录下登录状态(提示:可以使用全局变量来记录)
'''
dic={}
with open('db.txt', mode='rt', encoding='utf-8') as f2:
for line in f2:
user,word=line.strip().split(':')
dic[user]=word
print(dic)
login_user=None
def users():
username = input('请输入用户名称: ').strip()
if username in dic:
password = input('请输入用户密码: ').strip()
if password == dic[username]:
print('登录成功!')
global login_user
login_user = username
else:
print('用户名不存在,请先注册')
count = 0
while count < 3:
usernames = input('请输入用户名称: ').strip()
password = input('请输入用户密码: ').strip()
r_password = input('请确认用户密码: ').strip()
if password == r_password:
print(f'[{usernames}]注册成功')
count = input('请输入存款金额:')
with open('db.txt', mode='at', encoding='utf-8') as f1:
f1.write('{}:{}:{}'.format(usernames, password, count))
else:
print('注册失败!')
count += 1
continue

users()
'''
# 下述操作,要求登录后才能操作
# 1、充值功能:用户输入充值钱数,db.txt中该账号钱数完成修改
# 2、转账功能:用户A向用户B转账1000元,db.txt中完成用户A账号减钱,用户B账号加钱
# 3、提现功能:用户输入提现金额,db.txt中该账号钱数减少
# 4、查询余额功能:输入账号查询余额
dic={}
with open('dbs.txt', mode='rt', encoding='utf-8') as f2:
for line in f2:
user,word=line.strip().split(':')
dic[user]=word
print(dic)
login_user=None
def users():
username = input('请输入用户名称: ').strip()
if username in dic:
password = input('请输入用户密码: ').strip()
if password == dic[username]:
print('登录成功!')
global login_user
login_user = username
while True:
dics = {}
with open('db.txt', mode='rt', encoding='utf-8') as f3:
for line2 in f3:
user2, money = line2.strip().split(':')
dics[user2] = int(money)
def transfer():
print('转账')
while True:
usernameb = input('请输入对方账户名称:')

if usernameb == username:
print('您不能给自己转账')
continue
if usernameb not in dics:
print('账户不存在')
continue
else:
outcount = input('请输入转账金额:')
outcount = int(outcount)
user3 = username
dics[user3] -= outcount
user4 = usernameb
dics[user4] += outcount
with open('db.txt', mode='wt', encoding='utf-8') as f4:
for user2, money in dics.items():
f4.write(f'{user2}:{money}\n')
break
def check_banlance():
print('查询余额')
user2 = username
money = dics[user2]
print(money)
def withdraw():
print('提现')
incount = input('请输入提现金额:').strip()
incount = int(incount)
user2 = username
dics[user2] -= incount
with open('db.txt', mode='wt', encoding='utf-8') as f6:
for user2, money in dics.items():
f6.write(f'{user2}:{money}\n')
def recharge():
print('充值')
incount = input('请输入充值金额:').strip()
incount = int(incount)
user2 = username
dics[user2] += incount
with open('db.txt', mode='wt', encoding='utf-8') as f5:
for user2, money in dics.items():
f5.write(f'{user2}:{money}\n')
while True:
func_dic = {
'1': ['退出', None],
'2': ['转账', transfer],
'3': ['查询余额', check_banlance],
'4': ['提现', withdraw],
'5': ['充值', recharge]
}
for k in func_dic:
print(k, func_dic[k][0])
cmd = input('请输入命令编号(纯数字):').strip()
if not cmd.isdigit():
print('必须输入纯数字!')
continue
elif cmd == '1':
break
elif cmd in func_dic:
func_dic[cmd][1]()
else:
print('输入的指令不存在!')
else:
print('用户名不存在,请先注册')
count = 0
while count < 3:
usernames = input('请输入用户名称: ').strip()
password = input('请输入用户密码: ').strip()
r_password = input('请确认用户密码: ').strip()
if password == r_password:
print(f'[{usernames}]注册成功')
with open('dbs.txt', mode='at', encoding='utf-8') as f1:
f1.write('{}:{}\n'.format(usernames, password))
else:
print('注册失败!')
count += 1
continue
users()
posted on 2020-03-20 17:53  OBOS  阅读(169)  评论(0编辑  收藏  举报