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


    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. 更可配置 
  • 相关阅读:
    jQuery 语法
    HTML DOM Document 对象
    JavaScript
    JavaScript Cookies
    JavaScript 计时事件
    九度OJ 1352 和为S的两个数字
    九度0J 1374 所有员工年龄排序
    九度OJ 1373 整数中1出现的次数(从1到n整数中1出现的次数)
    九度OJ 1370 数组中出现次数超过一半的数字
    九度OJ 1361 翻转单词顺序
  • 原文地址:https://www.cnblogs.com/huiming/p/5573381.html
Copyright © 2020-2023  润新知