zoukankan      html  css  js  c++  java
  • Python编码练习题(2)

    题目1   Python实现float数的四舍五入
    def panf(f):
        if isinstance(f,float):    #判断输入的数是否为float类型     isinstance(object, classinfo)  判断实例是否是这个类或者object是变量
            b=int(str(f).split('.')[0])    #对该数先转换为字符串 然后进行分割,以‘.’进行分割  取得小数点前半部分
            c=str(f).split('.')[1]     #分割后取小数点后半部分
            if int(c[0:1])>=5:   #判断分割后的后半部分数据第一个数是否大于5 ,比较前先转换为int类型
                b+=1           #小数点后半部分第一个数大于5 就将整数部分加1
            else:
                return b    #否则直接返回整数部分
            return b
        else:
            return (u'不是float类型参数')
    print(panf(4.5999))
    
    

     题目2 Python 根据key对字典进行排序

    dic={'name':'laohu','age':'twenty','height':'178cm'}
    
    res =sorted(dic.items(),key=lambda x:x[0],reverse=True)
    print("按照key降序排序后:",res)
    result=sorted(dic.items(),key =lambda x:x[1],reverse=False)
    print("按照value升序排序后",result)
    
    
    #key=lambda x:x[0], reverse=True) # 按照第0个元素降序排列
    # dic.items() 为待排序的对象;
    # key=lambda x: x[0] 为对前面的对象中的第一维数据(即key)的值进行排序。
    # key=lambda  变量:变量[维数] 。维数可以按照自己的需要进行设置。
    # reverse=True  将元素进行降序排序    key=lambda x:x[0]  第0个元素 也就是按照key值排序
    # reverse=TFalse   升序排序

    题目3: 给定一个非空正整数数组,把数值出现的次数存在一个新的字典中,并按照出现的次数排序

    def dict_sort(array_L):
        dic = {}
        for i in array_L:   #依次迭代给定数组中的元素
            if array_L.count(i) > 0:   #list.count()统计元素在列表中出现的次数
                dic[i] = array_L.count(i)   #字典保存元素和其出现的个数,(key,value)=(元素i,个数count(i))
        #对dic中的元素按照个数的多少降序排序     
        newdic = sorted(dic.items(), key=lambda items: items[1], reverse=True)
        return newdic   # 返回降序排序后的结果
    
    array_L = [1, 1, 1, 6,6, 6, 7,7, 9, 3]
    res=dict_sort(array_L)
    print("结果:",res)

    备注:

    python中的list是python的内置数据类型,list中的数据类不必相同的,而array的中的类型必须全部相同。
    在list中的数据类型保存的是数据的存放的地址,简单的说就是指针,并非数据,这样保存一个list就太麻烦了,例如list1=[1,2,3,'a']需要4个指针和四个数据,增加了存储和消耗cpu。

    numpy中封装的array有很强大的功能,里面存放的都是相同的数据类型

    题目4: 在一个整数数组中找到两个数之和等于目标值,并把两数下标存在list中返回

    #给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
    #你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
    #示例: 给定 nums = [2, 7, 11, 15], target = 9
    #因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]
    class Solution():
        def getSum(self,nums,target):
            nums_index=[]  #用于存储目标数据,所获取的下标存放在该列表
            for i in range(len(nums)):  #获取数组长度,依次迭代每个元素  循环次数
                for j in range(i+1,len(nums)):  # 循环,使用当前元素和其之后的每个元素依次加 比较和目标值是否相同
                    if nums[i]+nums[j]==target:
                        nums_index.append(i)   # 满足条件时,追加元素的下标
                        nums_index.append(j)
            return nums_index  #返回结果
    
    if __name__=="__main__":
            nums=[2,7,8,9,11,4]
            target=15
            l=Solution()
            res=l.getSum(nums,target)
            print("结果:",res)
     
  • 相关阅读:
    51nod 1067 Bash游戏 V2
    洛谷 P1454 圣诞夜的极光 == codevs 1293 送给圣诞夜的极光
    bzoj4754: [Jsoi2016]独特的树叶
    bzoj 4241: 历史研究
    bzoj 1266 [AHOI2006] 上学路线
    bzoj4571: [Scoi2016]美味
    bzoj4570: [Scoi2016]妖怪
    51nod 1238 最小公倍数之和 V3
    一个康托展开的板子
    poweroj1745: 餐巾计划问题
  • 原文地址:https://www.cnblogs.com/carey9420/p/12061592.html
Copyright © 2011-2022 走看看