2019-08-05

作业

import math

1.写一个生成式能够产生的数据为: 1, 4, 27, 256, 3125,…, 9**9

iter_generate = list(num ** num for num in range(1, 10))
print(iter_generate)

2.写一个生成式能够产生1-10中所有半径是偶数的圆的面积

iter_area = tuple(radius**2*math.pi for radius in range(1, 11) if not radius & 1)
print(iter_area)

3.写一个生成式交换字段的键和值,产生一个新的字典

dict_1 = {'a': 1, 'b': 2}
iter_dict = dict((value, key) for key, value in dict_1.items())  # dict.items 遍历字典中的键值
print(iter_dict)

4.为函数写一个装饰器,在函数执行之后输出 after

def decorator(func_1):
    def func_2(*args, **kwargs):
        func_1(*args, **kwargs)
        print('after')
    return func_2

@decorator
def func_3(x, y):
    print(x + y)


func_3(1, 2)

5.为函数写一个装饰器,把函数的返回值 +100 然后再返回

def add(func):
    def implement(*args, **kwargs):
        num_1 = func(*args, **kwargs) + 100
        return num_1
    return implement


@add
def add_1(x, y):
    return x+y


print(add_1(1, 2))

5.写一个装饰器@tag要求满足如下功能:

def tag(func):
    def tag_1(*args, **kwargs):
        if len(args) == 0:
            func(*args, **kwargs)
            return '<p>abc<p>'
        else:
            char = '<p>' + func(*args, **kwargs) + '<p>'
            return char
    return tag_1


@tag
def render_1(text):
    return text


print(render_1("hello"))


@tag
def render_2():
    return 'abc'


print(render_2())

6.写一个装饰器@tag要求满足如下功能(需要带参数的装饰器)

def sg(name):
    def tag(func):
        def tag_1(*args, **kwargs):
            if name == 'p':
                if len(args) != 0:
                    func(*args, **kwargs)
                    char = '<p>' + func(*args, **kwargs) + '<p>'
                    return char
                else:
                    print("参数错误")
            elif name == 'div':
                if len(args) == 0:
                    func(*args, **kwargs)
                    return '<p>abc<p>'
                else:
                    print("参数错误")
        return tag_1
    return tag


@sg(name='p')
def render_1(text):
    return text


print(render_1("hello"))


@sg(name='div')
def render_2():
    return 'abc'


print(render_2())

7.为函数写一个装饰器,根据参数不同做不同操作。

flag为True,则 让原函数执行后返回值加100,并返回。

flag为False,则 让原函数执行后返回值减100,并返回。

def parameter(flag):
    def tag(func):
        def tag_1(*args, **kwargs):
            sum_1 = func(*args, **kwargs)
            if flag == 1:
                return sum_1 + 100
            else:
                return sum_1 - 100
        return tag_1
    return tag


@parameter(flag=True)
def func_1(x, y):
    return x+y


print(func_1(100, 200))  # 400


@parameter(flag=False)
def func_2(x, y):
    return x+y


print(func_2(400, 200))  # 500

8.写一个斗地主发牌器

import random


def lice():
    list_all = []
    list_1 = []   # 牌手1
    list_2 = []   # 牌手2
    list_3 = []   # 牌手3
    list_4 = []   # 地主牌
    for i in range(1, 55):
        list_all.append(i)
        random.shuffle(list_all)
    for j in range(1, (len(list_all)//3)):
            list_1.append(list_all[j*3 - 2])        
            list_2.append(list_all[j*3 - 1])
            list_3.append(list_all[j*3])
    list_4 = list(set(list_all) - set(list_1) - set(list_2) - set(list_3))
    print('牌手1的手牌:', *list_1)
    print('牌手2的手牌:', *list_2)
    print('牌手3的手牌:', *list_3)
    print('地主牌:', *list_4)


lice()
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 写一个生成式能够产生的数据为: 1, 4, 27, 256, 3125,…, 9**9 写一个生成式能够产生1-1...
    数番番阅读 241评论 0 0
  • 写一个生成式能够产生的数据为: 1, 4, 27, 256, 3125,…, 9**9 写一个生成式能够产生1-1...
    容荔阅读 299评论 0 0
  • 写一个生成式能够产生的数据为: 1, 4, 27, 256, 3125,…, 9**9 写一个生成式能够产生1-1...
    漫磋嗟阅读 210评论 0 0
  • 1.写一个生成式能够产生的数据为: 1, 4, 27, 256, 3125,…, 9**9 2.写一个生成式能够产...
    风中逐月fzzy阅读 353评论 0 1
  • 在除夕当天,全国公安消防部门接警出动6821次,出动消防车辆13645辆(次),出动官兵76494人(次),也就是...
    贵耳重目阅读 542评论 0 0

友情链接更多精彩内容