第一题
# 1.写出完整的装饰器(不用考虑带参装饰器,就是普通装饰器)语法
def outter(fn):
def inner(*args,**kwargs):
res=fn(*args,**kwargs)
print("新增功能")
return res
return inner
@outter
def fn(*args,**kwargs):
print("你好")
fn()
"""
"""
第二题
#2.有一个计算两个数和的方法,为其添加一个确保两个参数都是int或float
类型的装饰器,保证运算不会抛异常。
def check_num(func):
def indder(n1,n2):
b1=isinstance(n1,int) or isinstance(n1,float)
b2=isinstance(n2,int) or isinstance(n2,float)
if not (b1 and b2):
print("不能求和")
return
return func(n1,n2)
return indder
@check_num
def add(n1,n2):
return n1+n2
print(add(3,4))
"""
"""
第三题
3.有一个一次性录入人名并返回人名的方法(人名只考虑存英文),为其添加
一个装饰器,使得处理后人名首字母一定大写
def outter(func):
def inner():
res=func()
return res.title()
return inner
@outter
def get_name():
name=input('name: ')
return name
print(get_name())
def outter(fn):
def inner(*args,**kwargs):
res=fn(*args,**kwargs)
print("新增功能")
return res
return inner
@outter
def fn(*args,**kwargs):
print("你好")
fn()
"""
"""
第二题
#2.有一个计算两个数和的方法,为其添加一个确保两个参数都是int或float
类型的装饰器,保证运算不会抛异常。
def check_num(func):
def indder(n1,n2):
b1=isinstance(n1,int) or isinstance(n1,float)
b2=isinstance(n2,int) or isinstance(n2,float)
if not (b1 and b2):
print("不能求和")
return
return func(n1,n2)
return indder
@check_num
def add(n1,n2):
return n1+n2
print(add(3,4))
"""
"""
第三题
3.有一个一次性录入人名并返回人名的方法(人名只考虑存英文),为其添加
一个装饰器,使得处理后人名首字母一定大写
def outter(func):
def inner():
res=func()
return res.title()
return inner
@outter
def get_name():
name=input('name: ')
return name
print(get_name())
4.需求:用函数修改文件
def check_file(filename,old,new):
import os
with open(filename,'r',encoding='utf-8') as read_f:
with open('.filename','w',encoding='utf-8') as write_f:
for line in read_f:
if old in line:
write_f.write(line.replace(old,new))
else:
write_f.write(line)
os.remove(filename)
os.rename('.filename',filename)
check_file('001.txt','鱼','胡')
def check_file(filename,old,new):
import os
with open(filename,'r',encoding='utf-8') as read_f:
with open('.filename','w',encoding='utf-8') as write_f:
for line in read_f:
if old in line:
write_f.write(line.replace(old,new))
else:
write_f.write(line)
os.remove(filename)
os.rename('.filename',filename)
check_file('001.txt','鱼','胡')
5.需求:写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
def check_list(list):
if len(list)>2:
list=list[0:2]
return list
else:
return list
print(check_list([1]))
难点:list=list[0:2]
def check_list(list):
if len(list)>2:
list=list[0:2]
return list
else:
return list
print(check_list([1]))
难点:list=list[0:2]
5、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
def check_list(list):
return list[::2]
print(check_list([1,2,3,4,5,6]))
def check_list(list):
return list[::2]
print(check_list([1,2,3,4,5,6]))