进阶 第二课:函数(第二节)

1. 习题问题的总结
    (1) 不要讲问题复杂化, 越简单越好
    (2) 自己要测试。多测试,测试要完整(类型测试和内容测试)


# -*- coding=utf-8 -*- 

# 习题:

# 1.定义一个方法 func,该func可以引入任意多的整型参数,结果返回其中最大与最小的值。

def f_max(*kr):
    a = kr[0]
    for i in kr:
        if isinstance(i,int):
            if a <= i:
                a = i 
            else:
                pass
        else:
            return 'kr is contain not integer cells'
    return a 

print f_max(1,2,3,4)



# 找到最大值和最小值 
def fun_max_min(*num):
    for i in num:
        if not isinstance(i, int):
            pass 
        else:
            return '请输入整型数字'
    a = sorted(num) 
    return "maxinum is %d and mininum is %d" % (a[-1],a[0])


print fun_max_min(1,2,3,4)

#老师点评:可以用filter对数据进行过滤,然后取出最大值和最小值 

def fun_max_min(*num):


    num_int = filter(lambda x: isinstance(x, int), num)
    a = sorted(num_int)
    return "maxinum is %d and mininum is %d" % (a[-1],a[0])

print fun_max_min(1,2,3,4,'a','b')

 
# 2.定义一个方法func,该func可以引入任意多的字符串参数,结果返回(长度)最长的字符串。

def str_len(*kr):
    lens = 0 
    max_str = ''
    for i in kr:
        if isinstance(i, str):
            if lens <= len(i):
                lens = len(i)
                max_str = i 
            else:
                pass
        else:
            return 'the input contain not str cells'
    return i 


print str_len('asd','asdas','sfdfasdsdfsd',345322)


# 方法二:

def str_maxlen(*sen):
    for i in sen:
        if isinstance(i,str):
            pass
        else:
            return '请输入字符串'
    a = sorted(sen,key=lambda k:len(k), reverse=True)
    return 'maxinum len string is %s' % a[0]

print str_maxlen('asd','asdas','sfdfasdsdfsd')





# 3.定义一个方法get_doc(module),module参数为该脚本中导入或定义的模块对象,该函数返回module的帮助文档。
# 例 print get_doc(urllib),则会输出urllib这个模块的帮助文档。 

def get_doc(str1):
    return help(str1)

get_doc("urllib")


# 方法二:

import os 
def get_doc2(str1):
    a = 'pydoc %s' % str1 
    m = os.popen("python -m %s" % a).read()
    return m 

print get_doc2("str")  # prinnt参数里面一定要加引号 




# 4.定义一个方法get_text(f),f参数为任意一个文件的磁盘路径,该函数返回f文件的内容。

import os 
def get_text(str1):
    if os.path.exists(f):
        with open(str1,'r') as g:
            return g.read()
    else:
        return "没有这个文件" 

get_text('d:/ttt.txt')







# 5.定义一个方法get_dir(folder),folder参数为任意一个文件夹,该函数返回folder文件夹的文件列表。提示(可以了解python的glob模块)


import glob
a = []
def get_dir(dir1):
    a = glob.glob(dir1+"*")
    return [a[i].decode('gbk') for i in range(len(a))]

a = get_dir("D:/")

for i in a:
    print i 





2. 怎么去学习使用函数
    (1) 别管那么多复杂的, 先直接把功能实现了
    (2) 抽象成函数:命名规范, 伪代码, 参数默认值
    (3) 将函数变得更加健壮, 让他可以跑很多地方.
        1) 假设你写的函数是要交给你的基友用 -> 功能完整
        2) 假设你写函数是交给你的学弟用     -> 异常处理完善 
    (4) 测试
        1) asset
        2) 对函数的反馈值进行一个值和类型的测试
        3)单元测试 


def func1():
    pass


命名规范:
下划线命名法:get_doc_from_url()
驼峰命名法:  GetDocFromUrl()


为什么要用默认值:
1. 更省事
2. 更可配置 

 

posted on 2016-06-10 10:55  慧命  阅读(700)  评论(0编辑  收藏  举报

导航