美文网首页
练习作业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