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)
     
  • 相关阅读:
    Smart Client Architecture and Design Guide
    Duwamish密码分析篇, Part 3
    庆贺发文100篇
    .Net Distributed Application Design Guide
    New Introduction to ASP.NET 2.0 Web Parts Framework
    SPS toplevel Site Collection Administrators and Owners
    来自Ingo Rammer先生的Email关于《Advanced .Net Remoting》
    The newsletter published by Ingo Rammer
    深度探索.Net Remoting基础架构
    信道、接收器、接收链和信道接受提供程序
  • 原文地址:https://www.cnblogs.com/carey9420/p/12061592.html
Copyright © 2011-2022 走看看