美文网首页程序员
Python3高阶函数习题解析

Python3高阶函数习题解析

作者: 阿Q说代码 | 来源:发表于2018-07-06 10:52 被阅读0次

            Hello,大家好,小编最近在学习廖雪峰老师官网的Python3,想通过解答每节知识点后的练习题的的方式来检验自己的学习成果,也希望能帮助和小编一样的小白解决心中的疑惑,大家共同进步。

    (1)map/reduce练习题:

            1,利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:['adam', 'LISA', 'barT'],输出:['Adam', 'Lisa', 'Bart']:

    代码如下:

    def normalize(name):

       name = name[0].upper()+name[1:].lower() #首字母大写,其余字母小写

       return name

    L1 = ['adam', 'LISA', 'barT']

    L2 = list(map(normalize, L1))

    print(L2)

        2,Python提供的sum()函数可以接受一个list并求和,请编写一个prod()函数,可以接受一个list并利用reduce()求积:

    代码部分:

    def prod(L):

        sum = 1;

        for i in L:

          sum = sum *i

        return sum

    print('3 * 5 * 7 * 9 =', prod([3, 5, 7, 9]))

    if prod([3, 5, 7, 9]) == 945:

        print('测试成功!')

    else:

        print('测试失败!')

        3,利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456

    代码部分:

    from functools import reduce

    def str2float(s):

        def fun(x,y):    

            return  x*10+y  

        n = s.index(".")    #获取“.”所在的位置

        s1 =list(map(int,[x for x in s[:n]]))    #将整数部分的字符化成整数类型的列表

        s2 =list(map(int,[x for x in s[n+1:]]))    #将小数部分的字符化成整数类型的列表

        return reduce(fun,s1)+reduce(fun,s2)/10**len(s2)

    #利用reduce将整数部分与小数部分加起来(**表示阶乘)

    (2)filter练习题:

            回数是指从左向右读和从右向左读都是一样的数,例如12321,909。请利用filter()筛选出回数:

    代码部分:

    def is_palindrome(n):

        s =int(str(n)[::-1])  #先将整数n转换为字符串形式,[::-1]是指将字符串倒叙排列,然后再转换                                    #为整数

        if s==n:               #如果转换前后俩值相等则是回数

        return s

    # 测试:

    output =filter(is_palindrome,range(1,1000))

    (3)sorted练习题:

        假设我们用一组tuple表示学生名字和成绩:L =[('Bob',75), ('Adam',92), ('Bart',66), ('Lisa',88)]

    请用sorted()对上述列表分别按名字排序:

    代码部分:

    # -*- coding: utf-8 -*-

    L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]

    def by_name(t):

        return t[0]

    L2 = sorted(L, key=by_name)

    print(L2)

    再按成绩从高到低排序:

    代码部分:

    def by_score(t):

        return -t[1]     #先取出成绩,然后成绩反方向排列

    L2 = sorted(L, key = by_score)

    print(L2)

    或者:

    def by_score(t):

        return t[1]

    L2 = sorted(L, key = by_score, reverse = True)

    print(L2)


            综上这就是在廖雪峰老师的官网Python3中的高阶函数练习题了。大家有什么不懂得地方欢迎留言,如果小编哪里写错了或者您有更好的解决方案,请联系小编吧!小编期望与您共同进步。

    相关文章

      网友评论

        本文标题:Python3高阶函数习题解析

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