1. # -*- coding: utf-8 -*-
    # @Time : 2019/1/4 20:49
    # @Author : Endless-cloud
    # @Site :
    # @File : day 12 课后作业.py
    # @Software: PyCharm
    '''
    # 3、编写装饰器,在每次执行被装饰函数之前打印一句’
    每次执行被装饰函数之前都得先经过这里,这里根据需求添加代码’
    在每次执行被装饰函数之前让用户输入用户名,密码,给用户三次机会,
    登录成功之后,才能访问该函数.
  2.  
  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。
  4.  
  5. '''
    flag =False
    def login(f):
  6.  
  7. def inner(*args,**kwargs):
  8.  
  9. global flag
    count = 1
    while count<=3:
    if flag:
    ret =f(*args,**kwargs)
    return ret
  10.  
  11. 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('请输入密码')
  12.  
  13. # {'wzh': '123', 'haha': '123', 'chihuo': '123'}
    try:
    if inpassword == dic[inusername]:
    flag =True
    ret=f(*args,**kwargs)
    return ret
    else:
    print('你还有{}次'.format(count))
  14.  
  15. except:
  16.  
  17. print('你还有{}次'.format(count))
    count =count+1
  18.  
  19. return inner
  20.  
  21. @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。
  22.  
  23. '''
    # 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 ='\n'+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不变)。
  24.  
  25. '''
    # 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 ='\n'+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:
  26.  
  27. 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():
  28.  
  29. ln =','.join(list(i)+j)
    ln ='\n'+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')

day 12 课后作业的更多相关文章

  1. python基础一之课后作业:编写登录接口

    1 # Author : Mamba 2 3 #python基础一之课后作业:编写登录接口 4 5 # 输入用户名密码 6 # 认证成功后显示欢迎信息 7 # 用户名3次输入错误后,退出程序 8 # ...

  2. day 11课后作业

    # -*- coding: utf-8 -*-# @Time : 2019/1/3 20:03# @Author : Endless-cloud# @Site : # @File : day 11 课 ...

  3. day 09 课后作业

    # -*- coding: utf-8 -*-# @Time : 2018/12/28 14:25# @Author : Endless-cloud# @Site : # @File : 08 课后作 ...

  4. day 08 课后作业

    # -*- coding: utf-8 -*-# @Time : 2018/12/27 17:27# @Author : Endless-cloud# @Site : # @File : day 8课 ...

  5. String字符串类课后作业

    String动手动脑和课后作业 请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? 结果: 总结:在Java中,内容相同的字串常量(&quo ...

  6. JAVA第三周课后作业

    JAVA课后作业 一.枚举类型 代码: enum Size{SMALL,MEDIUM,LARGE}; public cl ass EnumTest { public static void main( ...

  7. java课后作业

    课后作业之字串加密: 设计思想: 1.输入要加密的英文子串str 2.定义num=str的字符串长度 3.将字符串转化为单个字符 4.每个字符+3,向后移3个 5.定义str1,将新得到的每个字符加到 ...

  8. 吴恩达课后作业学习1-week4-homework-two-hidden-layer -1

    参考:https://blog.csdn.net/u013733326/article/details/79767169 希望大家直接到上面的网址去查看代码,下面是本人的笔记 两层神经网络,和吴恩达课 ...

  9. 吴恩达课后作业学习1-week4-homework-multi-hidden-layer -2

    参考:https://blog.csdn.net/u013733326/article/details/79767169 希望大家直接到上面的网址去查看代码,下面是本人的笔记 实现多层神经网络 1.准 ...

随机推荐

  1. ADF控件ID变化引发JS无法定位控件的解决方法

    原文地址:ADF控件ID变化引发JS无法定位控件的解决方法作者:Nicholas JSFF定义的控件ID到了客户端时往往会改变.例如在JSFF中的一个的ID为"ot1",但是当这个 ...

  2. 映射文件中增删改查标签中的parameterType和resultType

    parameterType:指定输入参数类型,mybatis通过ognl从输入对象中获取参数值拼接在sql中. resultType:指定输出结果类型,mybatis将sql查询结果的一行记录数据映射 ...

  3. 四元数--结合《real time rendering》中关于四元数部分

    四元数产生于1843年,是复数的一个扩展,所以里面包含了一些复数的运算.直到1985年才在图形学中使用. 四元数的优势是,相对与矩阵和欧拉角,四元数更直观和方便.四元数还可以用作某些方向上的插值,而欧 ...

  4. dedecms图片上传函数

    /** * 图片上传类 * @param $file上传图片信息 * @param $ty */ function upload_pic($file, $ty) { if (!is_uploaded_ ...

  5. ssh scp命令详解

    --查看版本 $ ssh -V OpenSSH_3.9p1, OpenSSL 0.9.7a Feb 19 2003 --用SSH登录到远程主机 localhost$ ssh -l jsmith(用户名 ...

  6. XP+Android手机DIY家庭视频点播系统-历时3周全力打造吊丝的幸福生活

    需求场景(纯熟虚构): 1. 哥电脑里有200G电影copy到手机上看没那么大空间,copy一部看一部删除一部,很是不方便也费时间.     2. 小林同学需求比较旺盛但是媳妇总有不方便的时候,家里有 ...

  7. UVa 11136 Hoax or what (STL)

    题意:有 n 天,每天有m个数,开始的前一天没有数据,然后每天从这个里面拿出一个最大的和最小的,求 n 天的最大的和最小的差值相加. 析:一看就知道用set啊,多简单的STL,不过要注意,开long ...

  8. ldap域账号登录

    $host = "iflytek.com"; $user = 'yimiao@'.$host;//'用户名@域名'; $pswd = "******"; //1 ...

  9. iptables 增删查改

    一,安装并启动防火墙 二.添加防火墙规则 1.添加filter表 2.添加nat表 指定位置添加 三.删除iptables规则 四.查看防火墙规则 1.查看filter表 2.查看nat表 五.修改规 ...

  10. ORACLE ERP 的前世今生

    一个伟大的公司必有一个伟大的产品.如果说数据库是ORACLE在上世纪最后二十年赖以起家并奠定江湖地位的旗舰产品,那么,企业应用产品(或曰ERP)则毫无疑问是ORACLE在本世纪初的这近十年,征战疆场. ...