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 ='\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 课后作业的更多相关文章
- python基础一之课后作业:编写登录接口
1 # Author : Mamba 2 3 #python基础一之课后作业:编写登录接口 4 5 # 输入用户名密码 6 # 认证成功后显示欢迎信息 7 # 用户名3次输入错误后,退出程序 8 # ...
- day 11课后作业
# -*- coding: utf-8 -*-# @Time : 2019/1/3 20:03# @Author : Endless-cloud# @Site : # @File : day 11 课 ...
- day 09 课后作业
# -*- coding: utf-8 -*-# @Time : 2018/12/28 14:25# @Author : Endless-cloud# @Site : # @File : 08 课后作 ...
- day 08 课后作业
# -*- coding: utf-8 -*-# @Time : 2018/12/27 17:27# @Author : Endless-cloud# @Site : # @File : day 8课 ...
- String字符串类课后作业
String动手动脑和课后作业 请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? 结果: 总结:在Java中,内容相同的字串常量(&quo ...
- JAVA第三周课后作业
JAVA课后作业 一.枚举类型 代码: enum Size{SMALL,MEDIUM,LARGE}; public cl ass EnumTest { public static void main( ...
- java课后作业
课后作业之字串加密: 设计思想: 1.输入要加密的英文子串str 2.定义num=str的字符串长度 3.将字符串转化为单个字符 4.每个字符+3,向后移3个 5.定义str1,将新得到的每个字符加到 ...
- 吴恩达课后作业学习1-week4-homework-two-hidden-layer -1
参考:https://blog.csdn.net/u013733326/article/details/79767169 希望大家直接到上面的网址去查看代码,下面是本人的笔记 两层神经网络,和吴恩达课 ...
- 吴恩达课后作业学习1-week4-homework-multi-hidden-layer -2
参考:https://blog.csdn.net/u013733326/article/details/79767169 希望大家直接到上面的网址去查看代码,下面是本人的笔记 实现多层神经网络 1.准 ...
随机推荐
- 单源最短路:Dijkstra算法 及 关于负权的讨论
描述: 对于图(有向无向都适用),求某一点到其他任一点的最短路径(不能有负权边). 操作: 1. 初始化: 一个节点大小的数组dist[n] 源点的距离初始化为0,与源点直接相连的初始化为其权重,其他 ...
- Eclipse下生成.dll动态库及.a静态库使用 for Windows [z]
以后的主要工作就是做库了,将我们的C或者C++写的接口做成库,给客户端使用,因此有必要知道库的使用和制作方法.主要是在Eclipse下搞了搞,公司用的是Carbide,也差不多.库做好了,用SVN已提 ...
- [Training Video - 1] [Introduction to Web services]
What is a web service? http://webservicex.net/ws/default.aspx WebService是一种跨编程语言和跨操作系统平台的远程调用技术. 跨编程 ...
- C#多线程数据分布加载
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- KbmMW 4.40.00 正式版发布
经过快3个月的测试,kbmmw 4.40 正式版终于在圣诞节前发布了. We are happy to announce the availability of a new kbmMW release ...
- java grpc简单例子
原文地址:http://blog.csdn.net/jek123456/article/details/53465033 用eclipse新建一个maven项目,Id信息如下 <groupId& ...
- swoole1.8.0+版本异步redis安装(本实例为swoole1.8.10版本)详解
Swoole-1.8.0+版本增加了对异步Redis客户端的支持,基于redis官方提供的hiredis库实现.Swoole提供了__call魔术方法,来映射绝大部分Redis指令(本次安装实例为sw ...
- (广搜)聪明的打字员 -- POJ --1184
链接: http://poj.org/problem?id=1184 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=88230#probl ...
- 自我介绍+github注册
我是网络工程141的蒋易,学号是1413042018 个人兴趣:打篮球,打羽毛球,打游戏 github注册流程 id:Scorpio1 注册困难:1.刚开始网页没打开. 2.全英文的界面无法看懂,要查 ...
- Linux Guard Service - 守护进程再次分裂子进程
当系统区内存不能再申请新进程的时候申请会失败 在512MB内存下最多分配的子进程数 3331 [root@localhost 05]# ./test5-1 50000 expect 50000 sub ...