zoukankan      html  css  js  c++  java
  • day13 笔记

    文件修改方式:
    方式一:读全部,写全部 占内存 省硬盘
    方式二:一行行读入,做完更改之后用心的文件来覆盖旧的文件 删除 重命名 省内存 废硬盘
    os os.remove() os.rename()
    什么是函数?相当于一种具备某种功能的工具,先定义后调用
    为什么要用? 1.代码冗余,组织结构不清晰,可读性差
    2.可维护性,可扩展性
    如何用 先定义:
    def 函数名(参数):
    '''描述'''
    函数体
    return 1
    三种形式 1.无参数的
    2.有参数的
    3.空函数
    def add(x):
    pass
    def login(x):
    pass
    后调用:函数名类比变量名:内存地址
    1.根据函数名来寻找函数的内存地址
    2.根据括号内参数来执行程序内容
    函数调用可以当做参数:res(fun())
    函数返回值:return 是函数用来结束的标志,一旦函数运行到return位置是就会立即终止,并且返回值,默认返回值是None
    1.返回none的情况 1.没有return 2.return后面没有加任何值
    2.返回一个值 res=fun()#1
    3.返回多个值 会用,隔开并且以元组的形式返回这些值

    简易atm

    import os
    def login():
        '''登录模块,用户名密码存在aaa.txt中,形式为name:password'''
        tag = True
        while tag:
            username = input('请输入账号: ').strip()
            with open('aa.txt', 'r', encoding='utf-8') as f:
                for user_pwd in f:
                    user, pwd = user_pwd.strip().split(':')
                    if username == user:
                        while True:
                            password = input('请输入密码: ').strip()
                            if password == pwd:
                                print('登录成功!')
                                tag = False
                                break
                            else:
                                print('登录失败!')
        return 1,username
    def method_txt(username,new):
        '''文件更改模块,用来修改金额,文件是db.txt,格式为name:余额'''
        with open("db.txt",mode="r",encoding="utf-8")as f1,
            open("bb.txt",mode="w",encoding="utf-8")as f2:
            for i in f1:
                userdata =i.strip().split(":")
                if username == userdata[0]:
                    f2.write('%s:%s
    ' % (username, new))
                else:
                    f2.write(i)
        os.remove("db.txt")
        os.rename("bb.txt","db.txt")
    def add(username):
        '''存款模块,可以吧打开文件搜索相应账户的过程单独拿出来在写一个函数,但是交作业来不及了'''
        add_M = input("请输入你要存入的金额")
        with open("db.txt",mode="rt",encoding="utf-8")as f:
            for i in f:
                user_data = i.strip().split(":")
                if username == user_data[0]:
                    break
        user_data[1]=int(add_M)+int(user_data[1])
        method_txt(username,user_data[1])
        print("添加成功")
    def transfer(username):
        '''转账模块'''
        remove_U = input("请输入你要转入的账户")
        remove_M = input("请输入你要存入的金额")
        with open("db.txt",mode="rt",encoding="utf-8")as f:
            for i in f:
                user_data = i.strip().split(":")
                if username == user_data[0]:
                    break
        user_data[1]=int(user_data[1])-int(remove_M)
        method_txt(username,user_data[1])
        with open("db.txt",mode="rt",encoding="utf-8")as f:
            for i in f:
                user_data2 = i.strip().split(":")
                if remove_U == user_data2[0]:
                    break
        user_data2[1]=int(remove_M)+int(user_data2[1])
        method_txt(user_data2[0],user_data2[1])
        print("转账成功")
    def withdrawal(username):
        '''提现模块'''
        remove_M = input("请输入你要提现的金额")
        with open("db.txt", mode="rt", encoding="utf-8")as f:
            for i in f:
                user_data = i.strip().split(":")
                if username == user_data[0]:
                    break
        user_data[1] = int(user_data[1]) - int(remove_M)
        method_txt(username, user_data[1])
        print("提现成功")
    def select(username):
        '''查询模块'''
        with open("db.txt", mode="rt", encoding="utf-8")as f:
            for i in f:
                user_data = i.strip().split(":")
                if username == user_data[0]:
                    print(user_data)
    def main_atm():
        '''程序主函数'''
        res = login()
        while 1 in res:
            print("请选择命令:"
                  "1.充值"
                  "2.转账"
                  "3.提现"
                  "4.查询")
            cmd = int(input("请输入操作命令"))
            if cmd ==1:
                add(res[1])
            elif cmd == 2:
                transfer(res[1])
            elif cmd == 3:
                withdrawal(res[1])
            elif cmd == 4:
                select(res[1])
            else:
                print("请输入有效命令")
    main_atm()
    

      

  • 相关阅读:
    GDAL指定自定义的金字塔目录
    同一个脚本在SQLPLUS和SQLDEV上的不同
    【LeetCode-面试算法经典-Java实现】【062-Unique Paths(唯一路径)】
    unity3d的playmaker插件使用教程,三、对象出入触发,声音播放
    MapReduce实现矩阵乘法
    Nginx+Tomcat搭建高性能负载均衡集群
    怎么去掉Xcodeproject中的某种类型的警告 Implicit conversion loses integer precision: 'NSInteger' (aka 'long') to 'int32
    <html>
    实战c++中的vector系列--vector&lt;unique_ptr&lt;&gt;&gt;初始化(全部权转移)
    [Mac] mac linux 多线程下载利器 axel
  • 原文地址:https://www.cnblogs.com/Jicc-J/p/12514130.html
Copyright © 2011-2022 走看看