1. 编写文件修改功能,调用函数时,传入三个参数(修改的文件路径,要修改的内容,修改后的内容)既可完成文件的修改
import os
def func(address, old_concent, new_concent):
with open(r'{}'.format(address), 'rb') as f,
open(r'{}.swap'.format(address), 'wb') as f1:
for line in f:
res = line.decode('utf-8').replace(old_concent, new_concent)
f1.write(bytes(res, encoding='utf-8'))
os.remove(r'{}'.format(address))
os.rename('{}.swap'.format(address), '{}'.format(address))
adr = input('请输入地址:')
old = input('请输入需要修改的原文:')
new = input('请输入需要修改的新文:')
func(adr, old, new)
2. 编写tail工具
import time
def input_info():
with open(r'info.txt', 'ab') as f1:
res = input('输入要保存的内容:')
f1.write('{}
'.format(res).encode('utf-8'))
def tail():
with open(r'info.txt', 'rb') as f2:
f2.seek(0, 2)
while True:
info = f2.read()
if len(info) == 0:
time.sleep(0.5)
else:
print(info.decode('utf-8'), end='')
tail()
3. 编写登录功能
def login(account,password):
with open(r'account.txt','rt',encoding='utf-8') as f1:
for line in f1:
acc,pwd = line.strip().split(':')
if account == acc and pwd == password:
print('登录成功')
break
else:
print('用户名或密码错误')
acc = input('请输入账号')
pwd = input('请输入密码')
login(acc, pwd)
4. 编写注册功能
def register(account, password):
with open(r'account.txt', 'a+b') as f:
f.seek(0, 0)
for line in f:
account, password = line.strip().split(':'.encode('utf-8'))
if acc.encode('utf-8') == account:
print('账号已存在')
break
else:
f.seek(0, 2)
f.write('
{}:{}'.format(acc, pwd).encode('utf-8'))
print('注册成功')
# f.write(bytes('
{}:{}'.format(account, password), encoding='utf-8')
acc = input('请输入账号')
pwd = input('请输入密码')
register(acc, pwd)
5. 编写用户认证功能
def login():
inp_u = input("用户名:").strip()
inp_p = input("密码:").strip()
with open(r'db.txt', 'rt', encoding='utf-8') as f:
for line in f:
user, pwd = line.strip().split(':')
if inp_u == user and inp_p == pwd:
print("登录成功")
return True
else:
print("用户名密码错误")
return False
def check_user(user_check):
if user_check:
print("有趣的功能")
else:
print("请先登录")
def main():
user_check = False
msg = """
1、登录
2、有趣的功能
"""
tag = True
dic = {
'1': True,
'2': False
}
while tag:
print(msg)
num = input("请输入编号:").strip()
if not num.isdigit() and num not in dic:
print("必须输入指定编号")
else:
if dic[num]:
user_check = login()
else:
check_user(user_check)
6. 编写ATM程序
'''
# 1、充值功能:用户输入充值钱数,db.txt中该账号钱数完成修改
# 2、转账功能:用户A向用户B转账1000元,db.txt中完成用户A账号减钱,用户B账号加钱
# 3、提现功能:用户输入提现金额,db.txt中该账号钱数减少
# 4、查询余额功能:输入账号查询余额
# 选做题中的选做题:登录功能
# 用户登录成功后,内存中记录下该状态,上述功能以当前登录状态为准,必须先登录才能操作
'''
# 充值功能
import os
# def recharge(account, money):
def recharge():
account = login_user
money = input('请输入充值金额:')
with open(r'db.txt', 'rt', encoding='utf-8') as f1,
open(r'db.txt.swap', 'wt', encoding='utf-8') as f2:
for line in f1:
acc, money_old = line.strip().split(':')
if acc == account:
money_old = int(money_old)
money = int(money)
res = line.replace(str(money_old), str(money_old + money))
f2.write(res)
print('充值金额为{},余额为{}'.format(money, money + money_old))
else:
f2.write(line)
os.remove(r'db.txt')
os.rename('db.txt.swap', 'db.txt')
# recharge('A', 500)
# 转账功能
# def transfer_accpunts(account_trans, account_rece, money):
def transfer_accpunts():
account_trans = login_user
account_rece = input('请输入接收账号:')
money = input('请输入转账金额:')
with open(r'db.txt', 'rt', encoding='utf-8') as f3,
open(r'db.txt.swap', 'wt', encoding='utf-8') as f4:
for line in f3:
acc, money_old = line.strip().split(':')
money_old = int(money_old)
money = int(money)
if acc == account_trans:
money_l1 = money_old - money
res = line.replace(str(money_old), str(money_l1))
f4.write(res)
elif acc == account_rece:
money_l2 = money_old + money
res = line.replace(str(money_old), str(money_l2))
f4.write(res)
else:
f4.write(line)
print('{}向{}转账{}元,{}余额为{},{}余额为{}'.format(account_trans, money, account_rece, account_trans, money_l1,
account_rece, money_l2))
os.remove('db.txt')
os.rename('db.txt.swap', 'db.txt')
# transfer_accpunts('B','C',1500)
# 提现功能
# def withdraw(account, money):
def withdraw():
account = login_user
money = input('请输入提现金额:')
with open(r'db.txt', 'rt', encoding='utf-8') as f5,
open(r'db.txt.swap', 'wt', encoding='utf-8') as f6:
for line in f5:
acc, money_old = line.strip().split(':')
if acc == account:
money_old = int(money_old)
money = int(money)
res = line.replace(str(money_old), str(money_old - money))
f6.write(res)
print('提现金额为{},余额为{}'.format(money, money_old - money))
else:
f6.write(line)
os.remove(r'db.txt')
os.rename('db.txt.swap', 'db.txt')
# withdraw('A',100)
# 查询余额
def remainder():
account = login_user
with open(r'db.txt', 'rt', encoding='utf-8') as f7:
for line in f7:
acc, money = line.strip().split(':')
if acc == account:
print('余额为{}元'.format(money))
# remainder('A')
func_dic = {
'0': ('退出', None),
'1': ('充值', recharge),
'2': ('转账', transfer_accpunts),
'3': ('提现', withdraw),
'4': ('查询', remainder),
}
login_user = None
while True:
account = input('请输入账号:')
password = input('请输入密码:')
with open(r'bb.txt', 'rt', encoding='utf-8') as ff:
for line in ff:
acc, pwd = line.strip().split(':')
if acc == account and pwd == password:
# global login_user
login_user = account
print('{}登陆成功'.format(login_user))
while True:
for i, j in func_dic.items():
print('{}:{}'.format(i, j[0]))
operate = input('请输入待选事项序号:').strip()
if not operate.isdigit():
print('请重新输入序号')
if operate == '0':
break
elif operate in func_dic:
func_dic[operate][1]()
else:
print('请重新输入正确序号')
break
else:
print('账号密码错误,请重新输入')
break
# print('hello')