• day5作业


    练习:寻找差异

    # 数据库中原有
    old_dict = {
        "#1":{ 'hostname':c1, 'cpu_count': 2, 'mem_capicity': 80 },
        "#2":{ 'hostname':c1, 'cpu_count': 2, 'mem_capicity': 80 }
        "#3":{ 'hostname':c1, 'cpu_count': 2, 'mem_capicity': 80 }
    }
    # cmdb 新汇报的数据 new_dict = { "#1":{ 'hostname':c1, 'cpu_count': 2, 'mem_capicity': 800 }, "#3":{ 'hostname':c1, 'cpu_count': 2, 'mem_capicity': 80 } "#4":{ 'hostname':c2, 'cpu_count': 2, 'mem_capicity': 80 } }

    需要删除:?
    需要新建:?
    需要更新:?
    注意:无需考虑内部元素是否改变,只要原来存在,新汇报也存在,就是需要更新

     答案:

    #!usr/bin/evn python
    # -*- coding:utf-8 -*-
    
    #寻找差异
    
    # 数据库中原有
    old_dict = {
        '#1':{'hostname':'c1', 'cpu_count': 2, 'mem_capicity': 80 },
        '#2':{ 'hostname':'c1', 'cpu_count': 2, 'mem_capicity': 80 },
        '#3':{ 'hostname':'c1', 'cpu_count': 2, 'mem_capicity': 80 }
    }
    
    # cmdb 新汇报的数据
    new_dict = {
        "#1":{ 'hostname':'c1', 'cpu_count': 2, 'mem_capicity': 800 },
        "#3":{ 'hostname':'c1', 'cpu_count': 2, 'mem_capicity': 80 },
        "#4":{ 'hostname':'c2', 'cpu_count': 2, 'mem_capicity': 80 }
    }
    
    updated_dict=old_dict
    #dict的set
    old_dict_set=set(old_dict.keys())
    new_dict_set=set(new_dict.keys())
    
    #交集 #1#3
    old_new_intersection=old_dict_set.intersection(new_dict_set)
    
    #需要删除
    #old存在,new中不存在,old中要删除
    #del #2 
    old_dict1={}
    old_new_intersection=old_dict_set.intersection(new_dict_set)
    for j in old_new_intersection:
        old_dict1.setdefault(j,old_dict[j])
        #old_dict1[j]=old_dict[j]
    print(old_dict1)
    
    #old_dict_del=#2,#3
    old_dict_del=old_dict_set.difference(new_dict_set)
    
    #需要新建
    #new中存在,old中不存在,old中添加
    new_set=new_dict_set.difference(old_dict_set)
    old_dict2=old_dict
    for k in new_set:
        old_dict2[k]=new_dict[k]
    print(old_dict2)
    
    #需要更新
    #注意:无需考虑内部元素是否改变,只要原来存在,新汇报也存在,就是需要更新
    updated_dict=old_dict
    old_dict_update=old_dict_set.intersection(new_dict_set)
    for i in old_dict_update:
        updated_dict[i]=new_dict[i]
    print(updated_dict)
    

    练习题

    1、简述普通参数、指定参数、默认参数、动态参数的区别

    2、写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数

    3、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。

    4、写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。

    5、写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。

    6、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。

    7、写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。

    1
    2
    3
    dic = {"k1": "v1v1", "k2": [11,22,33,44]}
     
    PS:字典中的value只能是字符串或列表

    8、写函数,利用递归获取斐波那契数列中的第 10 个数,并将该值返回给调用者。

    答案:

    1.述普通参数、指定参数、默认参数、动态参数的区别

    (1)普通参数分为形式参数和实际参数;

    (2)指定参数就是给函数一个特点的参数;

    (3)默认参数就是在给函数设定好一个默认值,并且需要房子参数列表最后;

    (4)动态参数就给函数一个带*(tuple or strings orlist)的参数或在带**(dict)的参数

    2.写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数

    #!usr/bin/evn python
    # -*- coding:utf-8 -*-
    
    def count_it(it):
    
        count=len(str(it))
        print(count)
    count_it(22)
    

     3、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。

    def whats_len(ob):
        length=len(ob)
        if length>5:
            print('大于5啦!')
        else:
            print('没事,还小着呢!')
    whats_len([1,2,7])
    

    4、写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。

    def is_empty(ob):
        if type(ob)==str and ob=='':
            print('i am empty!')
        else:
            for i in ob:
                if i=='':
                    print('这货是空的!')
                else:
                    print('这里有东西!')
    is_empty('')
    is_empty([1,2,3,''])
    

    5、写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。

    def only2(ob):
        length=len(ob)
        if length>2:
            ob=ob[0:2]
            print(ob)
        else:
            print(ob)
        return ob
    only2([1])
    only2([1,3,2,23])
    

     6、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。

    def odd_element(ob):
        list_new=[]
        length=len(ob)
        for i in range(len(ob)):
            if i%2==1:
                list_new.append(ob[i])
            else:
                pass
        return  list_new
    print(odd_element([1,2,3,4,5]))
    

    7、写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。

    dic = {"k1": "v1v1", "k2": [11,22,33,44]}
    
     
    
    PS:字典中的value只能是字符串或列表
    
    dic = {"k1": "v1v1", "k2": [11,22,33,44]}
    
    
    def dict_only2(ob):
        new_dic={}
    
        for k,v in dic.items():
            if len(v)>:
                new_dic[k]=v[0:2]
            else:
                pass
        return new_dic
    
    print(dict_only2(dic))
    

     8、写函数,利用递归获取斐波那契数列中的第 10 个数,并将该值返回给调用者。

    #!usr/bin/env python
    # -*- coding:utf-8 -*-
    #
    # import
    fib=[]
    def fibonacci(depth,a1,a2):
    
        if depth!=11:
            a3 = a1 + a2
            fibonacci(depth + 1,a2,a3)
            fib.append(a1)
            print(a1)
            # print(a2)
            # print(a3)
            # print(fib)
    #为什么写成:
        # else:
        #     fib.sort()
        #     print(fib)
        # 输出的结果是:[34, 21, 13, 8, 5, 3, 2, 1, 1, 0]
        # fib.sort()
        # print(fib)
            # print(depth)
        return depth
    fibonacci(1,0,1)
    # fib.sort()
    # fib.reverse()
    print(fib)
    

      

  • 相关阅读:
    Docker windows下安装,入门及注意事项,并搭建包含Nodejs的webapp
    360浏览器table中的td为空时td边框不显示的解决方法
    关于发布webservice提示The test form is only available for requests from the local machine
    CRM相关SQl手记
    页面右下角弹出的消息提示框
    MS CRM2011 js常用总结
    MVC razor 使用服务器控件
    常用正则表达式
    CRM 2011 常用对象
    人工智能AI-机器视觉CV-数据挖掘DM-机器学习ML-神经网络-[资料集合贴]
  • 原文地址:https://www.cnblogs.com/ezway/p/6366415.html
Copyright © 2020-2023  润新知