• day 12 课后作业


    # -*- coding: utf-8 -*-
    # @Time : 2019/1/4 20:49
    # @Author : Endless-cloud
    # @Site :
    # @File : day 12 课后作业.py
    # @Software: PyCharm
    '''
    # 3、编写装饰器,在每次执行被装饰函数之前打印一句’
    每次执行被装饰函数之前都得先经过这里,这里根据需求添加代码’
    在每次执行被装饰函数之前让用户输入用户名,密码,给用户三次机会,
    登录成功之后,才能访问该函数.

    '''
    # def login(f):
    # falg =True
    # def inner(*args,**kwargs):
    # nonlocal falg
    # count = 3
    # while falg:
    #
    # name =input('name>>>>>')
    # password =input('password')
    # if name =='wzh' and password =='123':
    # f(*args,**kwargs)
    # break
    # else:
    # count = count - 1
    # print('账号密码错误{}'.format(count))
    #
    # if count==0:
    # falg=False
    # return inner
    #
    #
    # @login
    # def fun1(ss):
    # print('登录成功{}'.format(ss))
    # fun1('asdasdasda')
    '''
    # 4、编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件,只支持单用户的账号密码,给用户三次机会),
    要求登录成功一次,后续的函数都无需再输入用户名和密码
    '''
    # falg = False
    #
    #
    # def login(f):
    # def inner(*args,**kwargs):
    # global falg
    # if falg:
    # ret =f(*args,**kwargs)
    # # return ret
    # else:
    # username =input('请输入名字')
    # password =input('请输入密码')
    # if username=='wzh' and password =='123':
    #
    # falg=True
    # ret =f(*args,**kwargs)
    # # return ret
    #
    #
    # return inner
    #
    #
    # @login
    # def fun1(ss):
    # return 666
    # @login
    # def fun2(aa):
    # print('de{}'.format(aa))
    # @login
    # def fun3(cc):
    # print('asd{}'.format(cc))
    # print(fun1('asdasdasda'))
    # fun2('213')
    # fun3('aswww')
    '''
    # 5.写一个函数完成三次登陆功能:
    # 用户的用户名密码从一个文件register中取出。
    # register文件包含多个用户名,密码,用户名密码通过|隔开,每个人的用户名密码占用文件中一行。
    # 完成三次验证,三次验证不成功则登录失败,登录失败返回False。
    # 登陆成功返回True。

    '''
    flag =False
    def login(f):

    def inner(*args,**kwargs):

    global flag
    count = 1
    while count<=3:
    if flag:
    ret =f(*args,**kwargs)
    return ret

    else:
    dic={}
    with open('mima', 'r', encoding='utf-8') as f1:
    for i in f1:
    l=i.strip().split('|')
    # list.append(i.strip().split('|'))
    dic[l[0]]=l[1]
    inusername =input('请输入账号')
    inpassword =input('请输入密码')

    # {'wzh': '123', 'haha': '123', 'chihuo': '123'}
    try:
    if inpassword == dic[inusername]:
    flag =True
    ret=f(*args,**kwargs)
    return ret
    else:
    print('你还有{}次'.format(count))

    except:

    print('你还有{}次'.format(count))
    count =count+1



    return inner



    @login
    def fun(gg):
    return gg+'登陆陈工'
    @login
    def fun1(ll):
    return ll+'登陆陈工1'
    @login
    def fun2(ha):
    return ha+'登陆陈工2'
    print(fun('asdasdasd'))
    print(fun1('asdasdasd'))
    print(fun2('asdasdasd'))
    '''
    # 6.再写一个函数完成注册功能:
    # (1)用户输入用户名密码注册。
    # (2)注册时要验证(文件regsiter中)用户名是否存在,如果存在则让其重新输入用户名,如果不存在,则注册成功。
    # (3)注册成功后,将注册成功的用户名,密码写入regsiter文件,并以 | 隔开。
    # (4)注册成功后,返回True,否则返回False。


    '''
    # def zhuce():
    # dic ={}
    # with open('mima','r',encoding='utf-8') as f:
    # for line in f:
    #
    # s =line.strip().split('|')
    # dic[s[0]]=s[1]
    # while 1:
    # username =input('请输入用户名')
    # password = input('请输入密码')
    # if username in dic.keys():
    # print('你输入的账号已经重复请重新输入')
    # return False
    # else:
    # dic[username]=password
    #
    # print('你注册成功')
    # lis3 =' '+username+'|'+str(password)
    # # for n,j in dic.items():
    # # # lis4 =[]
    # # lis3.append('|'.join([n,j]))
    #
    #
    # with open('mima','a',encoding='utf-8') as f2:
    # f2.seek(0,2)
    # f2.writelines(str(lis3))
    # print('写入成功')
    # return True
    #
    # zhuce()
    '''
    # 7. 用完成一个员工信息表的增删功能(升级题)。
    # 文件存储格式如下:
    id,name,age,phone,job
    1,Alex,22,13651054608,IT
    2,太白,23,13304320533,Tearcher
    3,nezha,25,1333235322,IT
    # 现在要让你实现两个功能:
    # 第一个功能是实现给文件增加数据,用户通过输入姓名,年龄,电话,工作,给原文件增加数据
    (增加的数据默认追加到原数据最后一行的下一行),但id要实现自增
    (id自增有些难度,id是不需要用户输入的但是必须按照顺序增加)。
    # 第二个功能是实现给原文件删除数据,用户只需输入id,则将原文件对应的这一条数据删除
    (删除后下面的id不变,比如此时你输入1,则将第一条数据删除,但是下面所有数据的id值不变及太白,nezha的 id不变)。


    '''
    # def funxieru2():
    #
    # with open('xinxi','r',encoding='utf-8') as f1:
    # titie =f1.readline()
    # dic ={}
    # for i in f1: #['1', 'Alex', '22', '13651054608', 'IT']
    # l =i.strip().split(',')
    # # dic1={}
    # dic[l[0]]=l[1:]
    #
    # line_num =len(dic)
    # # print(line_num)
    #
    #
    # name =input('请输入名字')
    # age = input('请输入年龄')
    # id =input('请输入id')
    # zhiye =input('请输入职业')
    # key_num =str(line_num+1)
    # dic[key_num]=[name,age,id,zhiye]
    # print(dic)
    # with open('xinxi','w',encoding='utf-8') as f3:
    # f3.write(titie.strip())
    # for i,j in dic.items():
    #
    # ln =','.join(list(i)+j)
    # ln =' '+ln
    # f3.write(ln)
    # print('写入成功')
    # # print(dic)
    #
    #
    # funxieru2()
    def fundel():
    with open('xinxi','r',encoding='utf-8') as f4:
    titie =f4.readline().strip()
    dic1 ={}
    for line in f4:

    l =line.strip().split(',')
    dic1[l[0]] =l[1:] #['1', 'Alex', '22', '13651054608', 'IT']
    # print(dic1) #'1': ['Alex', '22', '13651054608', 'IT']
    del_id =input('请输入删除的id')
    dic1.pop(del_id)
    # print(dic1)
    with open('xinxi','w',encoding='utf-8') as f3:
    f3.write(titie.strip())
    for i,j in dic1.items():

    ln =','.join(list(i)+j)
    ln =' '+ln
    f3.write(ln)
    print('写入成功')
    fundel()
    # flag=False
    # count = 3
    # def login(func):
    # def inner(*args,**kwargs):
    # global flag,count
    # if flag:
    # print('每次执行被装饰函数之前都得先经过这里。')
    # func_ret=func(*args,**kwargs)
    # return func_ret,True
    # else:
    # while count>0:
    # username=input('请输入账户名:').strip()
    # password=input('请输入密码:').strip()
    # with open('mima',encoding='utf-8') as f1:
    # list_file=f1.readlines()
    # for i in range(len(list_file)):
    # if username == list_file[i].strip().split('|')[0] and password == list_file[i].strip().split('|')[1]:
    # flag=True
    # print('登录成功!')
    # print('每次执行被装饰函数之前都得先经过这里。')
    # func_ret=func(*args,**kwargs)
    # return func_ret,True
    # count -= 1
    # print('您输入的账户名或密码错误,请重新输入,剩余%s机会' % count)
    # if count == 0:
    # return False
    # return inner
    #
    # @login
    # def func1(para1):
    # print('in func1')
    # return para1
    # func1('test para1')
    # @login
    # def func2(para2):
    # print('in func2')
    # return para2
    # func2('test para2')
  • 相关阅读:
    BZOJ5212 ZJOI2018历史(LCT)
    BZOJ5127 数据校验
    253. Meeting Rooms II
    311. Sparse Matrix Multiplication
    254. Factor Combinations
    250. Count Univalue Subtrees
    259. 3Sum Smaller
    156. Binary Tree Upside Down
    360. Sort Transformed Array
    348. Design Tic-Tac-Toe
  • 原文地址:https://www.cnblogs.com/baili-luoyun/p/10239474.html
Copyright © 2020-2023  润新知