首页 > 代码库 > python核心编程--第十章 11.11 练习

python核心编程--第十章 11.11 练习




#!/usr/bin/python
# -*- coding: utf-8 -*-

# 11-3 函数。在这个练习中,我们将实现max()和min()内建函数。
#  (a) 写分别带两个元素返回一个较大和较小元素,简单的max2()核min2()函数。
#      他们应该可以用任意的python 对象运作。举例来说,max2(4,8)和min2(4,8)会各自每次返回8 和4。
#  (b) 创建使用了在a 部分中的解来重构max()和min()的新函数my_max()和my_min().
#      这些函数分别返回非空队列中一个最大和最小值。它们也能带一个参数集合作为输入。
#      用数字和字符串来测试你的解。


# (a)
def min2(a, b):
    if (a < b):
        return a
    else:
        return b

def max2(a, b):
    if (a > b):
        return a
    else:
        return b
# (b)
def my_min(*nkwargs):
    args = []
    for arg in nkwargs:
        args.append(arg)
    else:
        return reduce(min, args)

def my_max(*nkwargs):
    args = []
    for arg in nkwargs:
        args.append(arg)
    else:
        return reduce(max2, args)


    
print my_max(1, 2, 3, 4, 5, 6, 7)
print my_max("a", "c", "d", "A")
print my_min(1, 2, 3, 4, 5, 6, 7)
print my_min("a", "c", "d", "A")

#!/usr/bin/python
# -*- coding: utf-8 -*-

# 11–6. 变长参数。下一个称为printf()的函数。有一个值参数,格式字符串。
#       剩下的就是根据格式化字符串上的值,要显示在标准输出上的可变参数,
#       格式化字符串中的值允许特别的字符串格式操作指示符,如%d, %f, etc。
#       提示:解是很琐碎的----无需实现字符串操作符功能性,
#       但你需要显示用字符串格式化操作(%)

def printf(format, *nkwargs):
    print format % nkwargs

printf("%s, %d, %f", "aaa", 10.54, 10)


#!/usr/bin/python
# -*- coding: utf-8 -*-

# 11–9. 用reduce()进行函数式编程。复习11.7.2 部分,阐述如何用reduce()数字集合的累加
#       的代码。修改它,创建一个叫average()的函数来计算每个数字集合的简单的平均值。


def average(*numbers):
    count = len(numbers)
    return reduce(lambda x, y: float(x+y), numbers)/count

print average(1, 2, 3, 4, 5, 6, 7, 8, 9)


11–10.用filter()进行函数式编程。在unix 文件系统中,在每个文件夹或者目录中都有两个
特别的文件:'.'表示现在的目录,'..'表示父目录。给出上面的知识,看下os.listdir()函数的文
档并描述这段代码做了什么:
files = filter(lambda x: x and x[0] != '.', os. listdir(folder))显示folder文件夹下的所有非隐藏目录。