zoukankan      html  css  js  c++  java
  • day16作业

    #     1、函数对象优化多分支if的代码练熟
    def login():
        print('登录')
    def transfer():
        print('转账')
    def withdraw():
        print('提现')
    def check():
        print('查询')
    msg = {
        '0': ('退出', None),
        '1': ('充值', login),
        '2': ('转账', transfer),
        '3': ('提现', withdraw),
        '4': ('查询', check)
    }
    while True:
        for k,v in msg.items():
            print('{} {}'.format(k,v[0]))
        cmd = input('请输入命令编号:').strip()
        if not cmd.isdigit():
            print('请输入数字')
        if cmd == '0':
            break
        if cmd in msg:
            msg[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
    
    
    def counter1():
        x = 0
        def counter():
            nonlocal x
            x += 1
            return x
        return counter
    counter = counter1()
    
    print(counter())
    print(counter())
    print(counter())
    print(counter())
    print(counter())
    
    
    # ====================周末作业====================
    # 编写ATM程序实现下述功能,数据来源于文件db.txt
    # 0、注册功能:用户输入账号名、密码、金额,按照固定的格式存入文件db.txt
    # 1、登录功能:用户名不存在,要求必须先注册,用户名存在&输错三次锁定,登录成功后记录下登录状态(提示:可以使用全局变量来记录)
    
    #下述操作,要求登录后才能操作
    # 1、充值功能:用户输入充值钱数,db.txt中该账号钱数完成修改
    # 2、转账功能:用户A向用户B转账1000元,db.txt中完成用户A账号减钱,用户B账号加钱
    # 3、提现功能:用户输入提现金额,db.txt中该账号钱数减少
    # 4、查询余额功能:输入账号查询余额
    user_info = {}
    user_flag = {}
    with open("db.txt", mode='rt', encoding='utf8') as f:
        for line in f:
            name, pwd,balance,count = line.strip().split(":")
            user_info[name] = [pwd,int(balance),int(count)]
            user_flag[name] = False
    def login():
            while True:
                username = input("请输入账号:").strip()
                user_pwd = input("请输入密码:").strip()
                if username not in user_info:
                    print("用户不存在")
                elif username in user_info and user_info[username][2] >= 3:
                    print("你的账号已被锁定")
                    continue
                elif (user_info[username][0] != user_pwd):
                    user_info[username][2] += 1
                    print("密码错误")
                    if user_info.get(username)[2] >= 3:
                        print("你的账号已被锁定")
                        with open("db.txt", mode='w', encoding='utf-8') as f2:
                            for k,v in user_info.items():
                                f2.write('{}:{}:{}:{}
    '.format(k,v[0],v[1],v[2]))
                        continue
                else:
                    print("登陆成功")
                    user_flag[username] = True
                    msg = {
                        '0': ('退出', None),
                        '1': ('提现', withdraw),
                        '2': ('转账', transfer),
                        '3': ('充值', pay),
                        '4': ('查询余额', check)
                    }
                    while True:
                        for k in msg:
                            print(k, msg[k][0])
                        cmd = input('请输入命令编号').strip()
                        if cmd not in msg:
                            print('请输入正确编号')
                            continue
                        elif cmd == '0':
                            user_flag[username] = 0
                            break
                        else:
                            msg[cmd][1]()
                    break
    def register ():
        while True:
            username = input('请输入注册账号:')
            if username in user_info:
                    print('账号已存在')
                    continue
            else:
                userpwd = input('请输入密码:').strip()
                userpwd1 = input('请确认密码:').strip()
                if userpwd == userpwd1:
                    print('两次密码一致,注册成功')
                    f.write('{}:{}:{}:{}
    '.format(username,userpwd,0,0))
                    break
                else:
                    print('两次密码不一致')
                    continue
    def transfer():
        for i in user_flag:
            if user_flag[i] == True:
                name = i
        while True:
            B_user = input('请输入转入账号:')
            transfer_money = int(input('请输入转出金额:'))
            if B_user not in user_info:
                print('转入账户不存在')
                return
            if user_info[name][1] >= transfer_money:
                user_info[name][1] -= transfer_money
                with open('db.txt', mode='w', encoding='utf-8') as f:
                    for k, v in user_info.items():
                        f.write('{}:{}:{}:{}
    '.format(k, v[0], v[1], v[2]))
                    print("转账成功,您的余额为:{}".format(user_info[name][1]))
                    break
            else:
                print('余额不足')
    def withdraw():
        for i in user_flag:
            if user_flag[i] == True:
                name = i
        while True:
            withdraw_money = int(input('请输入提现金额:'))
            if user_info[name][1] >= withdraw_money:
                user_info[name][1] -= withdraw_money
                with open('db.txt', mode='w', encoding='utf-8') as f:
                    for k, v in user_info.items():
                        f.write('{}:{}:{}:{}
    '.format(k, v[0], v[1], v[2]))
                    print("提现成功,您的余额为:{}".format(user_info[name][1]))
                    break
            else:
                print('余额不足')
    def check():
        for i in user_flag:
            if user_flag[i] == True:
                name = i
        print('您的余额是:{}'.format(user_info[name][1]))
    def pay():
        while True:
            for i in user_flag:
                if user_flag[i] == True:
                    name = i
            num = int(input("请输入您充值金额:").strip())
            user_info[name][1] += num
            with open('db.txt', mode='w', encoding='utf-8') as f:
                for k, v in user_info.items():
                    f.write('{}:{}:{}:{}
    '.format(k, v[0], v[1], v[2]))
            print("充值成功,您的余额为:{}".format(user_info[name][1]))
            cmd = input('是否继续充值?1:是,任意其他字符:否').strip()
            if cmd == '1':
                continue
            else:
                break
    msg = {
        '0':('退出',None),
        '1':('登陆',login),
        '2':('注册',register),
    }
    while True:
        for k in msg:
            print(k,msg[k][0])
        cmd = input('请输入命令编号:')
        if cmd not in msg:
            print('请输入正确编号')
            continue
        elif cmd == '0':
            break
        else:
            msg[cmd][1]()
    

      

  • 相关阅读:
    MVC MVP MVVM
    RC4 对称加密
    ARM 寻址方式
    杂项记录 arm64 的一些特性
    无向图-笔记-代码
    iOS 自定义导航栏
    ios中设置UIButton圆角,添加边框
    iOS 中UICollectionView实现各种视觉效果
    UIScrollView中UITableView
    iOS 13 适配总结
  • 原文地址:https://www.cnblogs.com/yding/p/12554227.html
Copyright © 2011-2022 走看看