day13 作业
1、编写文件修改功能,调用函数时,传入三个参数(修改的文件路径,要修改的内容,修改后的内容)既可完成文件的修改
import os
def file_update(file_path,old_msg,new_msg):
    with open("b.txt","r",encoding="utf-8") as f \
            ,open(f"{file_path}\\b.txt","w",encoding="utf-8") as f1:
        for line in f:
            f1.write(line.replace(f"{old_msg}",f"{new_msg}"))
    os.remove("b.txt")
file_update("locked","a","b")
2、编写tail工具
import time
def tail():
    with open("log.txt","rb") as f:
        f.seek(0,2)
        while True:
            new_msg = f.readline()
            if len(new_msg)==0:
                time.sleep(1)
            else:
                print(new_msg.decode("utf-8"))
tail()
#另一个文件
def write_log():
    with open("log.txt","a",encoding="utf-8") as f:
        msg = input("请输入日志内容")
        f.write(f"\n{msg}")
write_log()
3、编写登录功能
def login():
    user_inp = input("your name >")
    pwd_inp = input("your msg >")
    with open("a.txt","r",encoding="utf-8") as f:
        for line in f :
            username,password = line.strip().split(":")
            if username==user_inp and pwd_inp == password:
                print("登录成功")
                break
        else:
            print("输入错误")
login()
4、编写注册功能
def register():
    username = input("请输入注册的用户名:")
    password = input("请输入注册的密码:")
    with open("a.txt","a",encoding="utf-8") as f :
        f.write(f"\n{username}:{password}")
register()
选做题:编写ATM程序实现以下功能,数据源于文件db.txt
1、充值功能:用户输入充值钱数,db.txt中该账号钱数完成修改
2、转账功能:用户A向用户B转账1000元,db.txt中完成用户A账号减钱,用户B账号加钱
3、提现功能:用户输入提现金额,db.txt中该账号钱数减少
4、查询余额功能:输入账号查询余额
5、用户登录成功后,内存中记录下该状态,上述功能以当前登录状态为准,必须先登录才能操作
import os
def recharge():
    ''' 充值功能'''
    name_inp = input("请输入要充值的账号>")
    money_inp = input("请输入要充值的金钱>")
    with open("db.txt","r",encoding="utf-8") as f ,\
        open(".db.txt.swap","w",encoding="utf-8") as f1:
            for line in f :
                if name_inp in line :
                    name,money = line.strip().split(":")
                    new_money = int(money_inp)+int(money)
                    f1.write(line.replace(money,str(new_money)))
                else:
                    f1.write(line)
    os.remove("db.txt")
    os.rename(".db.txt.swap","db.txt")
def transfer():
    '''转账功能'''
    transfer_name_inp = input("请输入转账人姓名:")
    collector_name_inp = input("请输入收账人姓名:")
    money_inp = input("请输入转账金额")
    with open("db.txt","r",encoding="utf-8") as f ,\
        open(".db.txt.swap","w",encoding="utf-8") as f1:
        for line in f :
            if transfer_name_inp in line :
                transfer_name,transfer_money=line.strip().split(":")
                new_money = int(transfer_money)-int(money_inp)
                f1.write(line.replace(transfer_money,str(new_money)))
            elif collector_name_inp in line:
                collector_name,collector_money=line.strip().split(":")
                new_money = int(collector_money)+int(money_inp)
                f1.write(line.replace(collector_money,str(new_money)))
            else:
                f1.write(line)
    os.remove("db.txt")
    os.rename(".db.txt.swap","db.txt")
def cash_withdrawal():
    '''提现功能'''
    name_inp = input("请输入提现账号的姓名:")
    money_inp = input("请输入提现的金额:")
    with open("db.txt","r",encoding="utf-8") as f ,\
        open(".db.txt.swap","w",encoding="utf-8") as f1:
        for line in f:
            if name_inp in line:
                name,money = line.strip().split(":")
                new_money = int(money)-int(money_inp)
                f1.write(line.replace(money,str(new_money)))
            else:
                f1.write(line)
    os.remove("db.txt")
    os.rename(".db.txt.swap","db.txt")
def login():
    '''登录功能'''
    user_inp = input("your name >")
    pwd_inp = input("your msg >")
    with open("a.txt","r",encoding="utf-8") as f:
        for line in f :
            username,password = line.strip().split(":")
            if username==user_inp and pwd_inp == password:
                print("登录成功")
                return 1
        else:
            print("输入错误")
def query():
    '''查询功能'''
    name_inp=input("请输入你要查询的用户名:")
    with open("db.txt","r",encoding="utf-8")as f :
        for line in f :
            name,money = line.strip().split(":")
            if name_inp in line:
                print(money)
                break
#主程序
list1=["1","2","3","4"]
while True:
    res = login()
    if res:
        while True:
            print('''
                   欢迎来到只能充值转账提现的劣质ATM系统
                               1.充值
                               2.转账
                               3.提现
                               4.查询
                   ''')
            cmd = input("请输入指令>")
            if cmd ==list1[0]:
                recharge()
            elif cmd == list1[1]:
                transfer()
            elif cmd == list1[2]:
                cash_withdrawal()
            elif cmd == list1[3]:
                query()
            else:
                print("非法输入")
day13 作业的更多相关文章
- day13作业
		#作业1猜年龄 , 可以让用户最多猜三次! # Auther:bing #!/usr/bin/env python age = 24 print("猜年龄") for i in r ... 
- 老男孩Day13作业:ORM学员管理系统
		一.作业需求: 用户角色,讲师\学员, 用户登陆后根据角色不同,能做的事情不同,分别如下 讲师视图: 管理班级,可创建班级,根据学员qq号把学员加入班级 可创建指定班级的上课纪录,注意一节上 ... 
- Day13作业及默写
		1. 整理今天的博客,写课上代码,整理流程图. 博客链接--博客园 2. 写一个函数完成三次登陆功能: 用户的用户名密码从一个文件register中取出. register文件包含多个用户名,密码,用 ... 
- day13作业—(登录注册)
		2.写一个函数完成三次登陆功能: 用户的用户名密码从一个文件register中取出. register文件包含多个用户名,密码,用户名密码通过|隔开,每个人的用户名密码占用文件中一行. 完成三次验证, ... 
- python全栈开发day12
		列表 创建列表: 基本操作: 索引 切片 追加 删除 长度 切片 循环 包含 #######################列表list类中提供的方法######################## ... 
- Day_13【IO流】扩展案例2_统计键盘录入字符在指定项目文件中出现的次数
		分析以下需求,并用代码实现 键盘录入一个字符(以字符串的形式录入) 判断当前字符在info3.txt当中是否存在 如果不存在, 给出提示 如果存在, 请统计出该字符出现的次数 Info3.txt内容如 ... 
- Day_13【IO流】扩展案例2_统计指定项目文件中字符出现的次数
		需求分析 统计当前项目下info2.txt文件中, 每个字符出现的个数 文件内容如下: welcome to itheima!!! 最终效果如下: w(1) (2)!(3)t(2)e(3)c(1)a( ... 
- Day_13【IO流】扩展案例1_读取项目文件内容并去重
		分析以下需求,并用代码实现: 需求: 读取当前项目下的info1.txt 文件内容如下 : aaaaaaaaaaabbbbbbbbbbbbccdefg 要求将数据去重后写回最终效果 : fgdebca ... 
- day13列表推导式作业详解
		1.day13题目 2,用列表推导式做下列小题 (1)过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母 (2)求(x,y)其中x是0-5之间的偶数,y是0-5之间的奇数组成的元祖列表 (3)求M ... 
随机推荐
- 重学 Java 设计模式:实战外观模式「基于SpringBoot开发门面模式中间件,统一控制接口白名单场景」
			作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 你感受到的容易,一定有人为你承担不容易 这句话更像是描述生活的,许许多多的磕磕绊绊总 ... 
- unittest实现用例运行失败截图
			把这个方法放到父类basecase(unittest.TestCase)就行了 #coding: utf-8 import unittest, random, os, traceback from s ... 
- MQ系列(1)——rabbitMQ简介
			前文我们学习了 MQ的相关知识,现在我们来学习一下实现了AMQP协议的 rabbitMQ 中间件.rabbitMQ 是使用 erlang 语言编写的中间件(erlang之父 19年4月去世的,很伟大一 ... 
- 这一次搞懂Spring事务是如何传播的
			文章目录 前言 正文 事务切面的调用过程 事务的传播性概念 实例分析 总结 前言 上一篇分析了事务注解的解析过程,本质上是将事务封装为切面加入到AOP的执行链中,因此会调用到MethodIncepto ... 
- Latex 安装 教程
			需要安装texlive和编辑器texstudio. 安装教程如https://www.cnblogs.com/dingruihfut/p/9690073.html 
- user is not in the sudoers file
			使用用户账户使用sudo来运行一些特权命令时出现了如下错误(sudo是一个允许特定的用户组用另一个用户(典型的是root)的特权来运行一个命令): user is not in the sudoers ... 
- Appium 自动化实例代码
			自动化连接 B站 开始 如果下载node.js 的话 可以检查一下appium环境 命令行: appium-doctor 如果没有 可以安装 appium-doctor :npm install ... 
- 终于搞明白Unicode,ASCII,UTF8,UCS2编码是啥了
			[本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究.若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!] 前言 本文起因于 ... 
- linux shell编程子bash变量
			参考视频:https://www.imooc.com/u/279399/courses?sort=publish https://www.imooc.com/video/6516 慕课网 用户的自定义 ... 
- xutils工具上传日志文件--后台服务器的搭建
			在上一篇文章中使用xutils将手机上保存的日志上传到后台服务器中,现在我们来讲后台服务器是如何搭建的 后台服务器采用jsp+sevlet+mysql的框架 首先讲mysql数据库的表的建立 在fil ... 
