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.准 ...
随机推荐
- 30. Substring with Concatenation of All Words (String; HashTable)
You are given a string, s, and a list of words, words, that are all of the same length. Find all sta ...
- SpringMVC学习总结(一)--Hello World入门
一.什么是Spring MVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 ...
- httpwebrequest详解
HttpWebRequest和HttpWebResponse类是用于发送和接收HTTP数据的最好选择.它们支持一系列有用的属性.这两个类位 于System.Net命名空间,默认情况下这个类对于控制台程 ...
- MySQL 系列(二)Jdbc
MySQL 系列(二)Jdbc 一.Jdbc 基本操作 import java.sql.Connection; import java.sql.DriverManager; import java.s ...
- 给tabhost加上点击监听,不是onTabChanged(String)监听
给tabhost加上点击监听,不是onTabChanged(String)监听 2012-08-11 01:43 5209人阅读 评论(0) 收藏 举报 stringandroidlayoutnull ...
- DataStage 六、安装和部署集群环境
DataStage序列文章 DataStage 一.安装 DataStage 二.InfoSphere Information Server进程的启动和停止 DataStage 三.配置ODBC Da ...
- windows server2012部署apache项目访问后台管理系统时tomcat就停了是怎么回事
是由于环境变量没有配好的原因,找不到jre目录 tomcat的运行需要JRE,一般启动闪退都是因为找不到JRE,也就是说环境安装JDK时环境变量没有配置好. 我们首先打开”命令提示符“窗口,输入jav ...
- .NET基础 (12)时间的操作System.DateTime
时间的操作System.DateTime1 DateTime如何存储时间2 如何在DateTime对象和字符串对象之间进行转换3 什么是UTC时间,如何转换到UTC时间 时间的操作System.Dat ...
- ETL开发
要进入开发阶段,了解不同的ETL产品. 整个ETL系统中,时间或更精确的,吞吐量是主要关心的内容.这种转换处理任务设计的主要目的归根结底是使得数据装载到展现表中最快并使得最终用户能快速的从这些表中得到 ...
- Jenkins HA高可用参考
商用版Jenkins(CloudBee)提供HA插件,开源版本可以借助etcd服务发现+心跳脚本+sync的方式实现高可用.