第四周装饰器作业

# 1.写出完整的装饰器(不⽤考虑带参装饰器,就是普通装饰器)语法
def wrapper(func):
def inner(*args,**kwargs):
pass
result = func(*args,**kwargs)
pass
return result
return inner

# 2.有⼀个计算两个数和的⽅法,为其添加⼀个确保两个参数都是int或float类型的装饰器,保证运算不会抛异常
def check(func):
def inner(n1,n2):
if not(isinstance(n1,(int,float) )and isinstance(n2,(int,float))):
print("不能相加")
return
return func(n1,n2)
return inner

@check
def sum_add(n1,n2):
return n1 + n2
print(sum_add(1,"2"))



# 3.有⼀个⼀次性录⼊⼈名并返回⼈名的⽅法(⼈名只考虑存英⽂),为其添加⼀个装饰器,使得处理后⼈名⾸字⺟⼀定⼤写
def new_name(func):
def inner():
result = func()
return result.tilie()
return inner

@new_name
def name():
name = input("name:")
return name
print(name())





# 拓展题:
# 1.原功能:entry_grade* ) 可以完成『成绩录⼊功能』-- 可以重复录⼊成绩,默认所有输⼊都是合法的(1~100之间的数)
# -- 当录⼊成绩为0时,结束成绩的录⼊
# -- 将录⼊的成绩保存在列表中并返回给外界,eg:[90, 80, 50, 70]

# 2.选择课程装饰器:choose_course *) 为『成绩录⼊功能』新增选择课程的拓展功能,达到可以录⼊不同学科的成绩
# - - 可以重复输⼊要录制的学科名,然后就可以进⼊该⻔学科的『成绩录⼊功能』,录⼊结束后,可以进⼊下⼀⻔学科成绩录⼊
# -- 当输⼊学科名为q时,结束所有录⼊⼯作
# - - 将学科成绩保存在字典中并返回给外界,eg:{'math': [90, 80, 50, 70], 'english': [70, 50, 55, 90]}

# 3.处理成绩装饰器:deal_fail *) 可以将所有录⼊的成绩按60分为分⽔岭,转换为"通过" | "不通过"进⾏存储
# - - 如果只对原功能装饰,结果还为list返回给外界,eg:["通过", "通过", "不通过", "通过"]
# - - 如果对已被选择课程装饰器装饰了的原功能再装饰,结果就为dict返回给外界,eg:
# {'math': ["通过", "通过", "不通过", "通过"], 'english': ["通过", "不通过", "不通过","通过"]}





猜你喜欢

转载自www.cnblogs.com/yangyan1123/p/10737389.html