# -*- 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 ='\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不变)。 '''
# 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: 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 ='\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. for 续4

    ---------siwuxie095             (四)tokens=x,y,m-n 显示指定的列     tokens=x 只显示第 x 列 tokens=x,y,z 只显示第 x,y ...

  2. golang之切片

    1.切片:切片是数组的一个引用,因此切片是引用类型 2.切片的长度可以改变,因此,切片是个可变的数组. 3.切片遍历方式和数组一样,可以用len()求长度 4.cap可以求出slice最大的容量,0& ...

  3. memcache can't run as root without the -u switch

    memcached是一款高速.分布式的内存缓存系统.其官方主页在http://www.danga.com/memcached/1.安装前的准备要安装memcached,需要有libevent的支持.c ...

  4. VMware CentOS LVM磁盘扩容

    一. 在虚拟机上增加磁盘空间 如下图. 增加完后会有提示 "磁盘已成功扩展.您必须从客户机操作系统内部对磁盘重新进行分区和扩展文件系统.是继续完成以下步骤才算成功. 二.调整虚拟机磁盘LVM ...

  5. qt5.7 安装

    http://blog.csdn.net/liang19890820/article/details/53931813#安装-qt57 安装运行出错:qt vstool 指定qt安装路径 http:/ ...

  6. jdbc和Java中的日期问题

    JDBC中的日期Java.sql.Date 是继承自Java中的Java.util.Date,在实现插入的时候可以 将Java.util.Date类型的时间转换成毫秒数,date.getTime(), ...

  7. K8S中RC与Deployment的区别

    原文:http://fx114.net/qa-81-152379.aspx replication controller与deployment的区别 replication controller Re ...

  8. java中double和float精度丢失问题

    为什么会出现这个问题呢,就这是java和其它计算机语言都会出现的问题,下面我们分析一下为什么会出现这个问题:float和double类型主要是为了科学计算和工程计算而设计的.他们执行二进制浮点运算,这 ...

  9. CodeForces 681B Economy Game (暴力)

    题意:给定一个数,问能不能 找到非负 a, b, c,使得 a × 1 234 567 + b × 123 456 + c × 1 234 = n. 析:二重循环,去确定c. 代码如下: #inclu ...

  10. PHP(十二)文件操作