美文网首页
练习作业1:

练习作业1:

作者: 足__迹 | 来源:发表于2019-08-10 19:05 被阅读0次
    """
    测试开发第一次作业
    1、使用字典推倒是将下面字符串格式的数据,改成字典类型的数据
    cook_str='BIDUPSID=D0727533D7147B7;PSTM=1530348042; BAIDUID=B1005C9BC2EB28;
     sugstore=0;__cfduid=d0a13458f8ac2a;BD_UPN=12314353;ispeed_lsm=2;BDORZ=B490B5EBF6F3CD402'
    
    """
    cook_str = 'BIDUPSID=D0727533D7147B7;PSTM=1530348042; BAIDUID=B1005C9BC2EB28;' \
               'sugstore=0;__cfduid=d0a13458f8ac2a;BD_UPN=12314353;ispeed_lsm=2;BDORZ=B490B5EBF6F3CD402'
    
    
    def cook_str_dicr(str):
        '''
        处理特定格式的字符串
        :param  传入需要处理的字符串
        :type   str
        :return:  返回处理后的字典
        '''
    
        return {value.split('=')[0]: value.split('=')[1] for value in str.split(';')}
    
    
    print(cook_str_dicr(cook_str))
    print(cook_str_dicr.__doc__)
    
    """
    2、请描述什么是可迭代对象? 什么是迭代器? 迭代器和生成器的区别?
    答:
     可迭代对象:
             实现了迭代协议
             内部实现__iter__方法
             可以用for循环迭代
     迭代器:
             实现了迭代协议
             内部实现__next__方法
             通过iter可以将迭代对象转换为迭代器
             生成器式一种特殊的迭代器
     迭代器和生成器的区别:
             生成器式一种特殊的迭代器
             生成器式比迭代器多了3个方法 send(),close(),throw()
               
    """
    
    '''
    3、 【】第一个元素是数据标识,第二个元素的数值必须大于等于50才返回,
    
    不够50往后累加,加到最后如果不够50也直接返回,因为没有可加的数据了
    
    '''
    
    a = [[1, 3], [2, 51], [3, 49], [4, 42], [5, 42]]  # 入参
    a1 = [[2, 54], [4, 91], [5, 42]]  # 返回
    b = [[1, 50], [2, 5], [3, 10], [4, 42], [5, 42], [6, 10]]  # 入参
    b1 = [[1, 50], [4, 57], [6, 52]]  # 返回
    
    #方法1
    import copy
    def num(list1):
        """
        :param list1:  符合格式要求的列表
        :return: 计算处理后的数组
        """
        b = 0
        _list1 = []
        _list2 = copy.deepcopy(list1)  # 进行深层复制,不会操作原有数据
        for i in _list2:
            if i[1] + b >= 50:
                i[1] = i[1] + b
                _list1.append(i)
                b = 0
            elif len(_list2) == i[0]:
                i[1] = i[1] + b
                _list1.append(i)
            else:
                b += i[1]
        return _list1
    
    
    
    #方法2
    def r_list2(list2):
        list1 = []
        r_list1 = iter(list2)
        for i in r_list1:
           while True:
            if i[1] >= 50:
                list1.append(i)
                break
            try:
                g = next(r_list1)
                i = [g[0], g[1] + i[1]]
            except StopIteration:
                list1.append(i)
                break
        return list1
    
    
    print(num(a))
    print(num(b))
    
    print(r_list2(a))
    print(r_list2(b))
    
    
    

    相关文章

      网友评论

          本文标题:练习作业1:

          本文链接:https://www.haomeiwen.com/subject/utfdjctx.html