美文网首页
python03-函数

python03-函数

作者: AndroidCat | 来源:发表于2017-04-19 17:30 被阅读0次

    函数传递

    • 函数可以作为参数传递
    def func1(fun, num):
        temp = pow(2, num)
        fun(temp) # 调用传入的函数
    
    def func2(num):
        print(num)
    
    # func1, func2是函数名,函数的引用
    # func1(), func2()是调用函数
    
    func1(func2, 100) #==> 1024
    

    内置函数

    • 自定义filter函数:
    def myFilter(function, iterable):
        li = []
        for temp in iterable:
            ret = function(temp)
            if ret:
                li.append(temp)
        return li
    
    li = [11, 22, 33, 44, 55, 66]
    ret = myFilter(lambda x:True if x > 22 else False, li)
    print(ret)
    
    • 自定义map函数:
    # 自定义map
    def myMap(function, iterable):
        """
        自定义map方法
        :param function:
        :param iterable:
        :return:
        """
        li = []
        for i in iterable:
            ret = function(i)
            li.append(ret)
        return li
    
    def function(args):
        return args + 100
    
    li = [11, 22, 33, 44, 55, 66]
    newList = myMap(function, li)
    print(newList)
    

    文件管理

    • 2.7 and 3.x
      • 2.7有open和file方法,效果一样
      • 3.x后把file方法去掉了,所以统一用open
    • 基本操作
      • rwxa
    • 二进制操作
      • rb,wb,xb,ab
    • 读写操作
      • r+:用的最多
        • 一进去如果不读,直接写,会在最前面插入
        • 进去后如果有读取操作,不管指针在哪里,写入数据直接会在最后追加,可以通过seek调整指针后插入数据,但是会覆盖原位置上的字符
      • w+:写读,创建或清空文件
      • x+:写读,创建或者抛异常
      • a+:追加
    • 直接迭代file文件可以一行一行获取数据

    模拟用户登陆界面

    • str.strip():去除空格和换行符
    • str.strip('char'):去除制定的字符
    • 定义函数需要写注释"""文档注释""""
    def main():
        sel = input('请选择用户操作:1-登陆,2-注册')
        if sel == '1':
            userName = getUserName()
            password = getPassword()
            flag = False
            with open('login.txt', mode='r', encoding='utf-8') as file:
                for i in file:
                    userInfo = i.strip().split('&')
                    if userName == userInfo[0] and password == userInfo[1]:
                        flag = True
                        break
                if flag:
                    print('登陆成功')
                else:
                    print('登陆失败')
        elif sel == '2':
            userName = getUserName()
            password = getPassword()
            flag = False
            with open('login.txt', mode='r+', encoding='utf-8')as file:
                for i in file:
                    ls = i.strip().split('&')
                    if ls[0] == userName:
                        flag = True
                        break
                if not flag:
                    file.write(userName)
                    file.write('&')
                    file.write(password)
                    file.write('\n')
                    print('注册成功')
                else:
                    print("用户已经存在")
            pass
        else:
            print('输入有误!')
    

    面试题

    • 函数式编程
    • 面向对象
    • 字节二进制转换
    • http请求
    • 数据库设计
    • 算法(排序之类)
    • 智力测试

    冒泡排序

    # 冒泡排序
    li = [22, 3, 4, 5, 1, 32, 56, 4, 23, 67, 68, 66, 32]
    
    def bobleSotr(ls):
        for current in range(len(ls) - 1):
            for i in range(len(ls) - 1 - current):
                if ls[i] > ls[i + 1]:
                    temp = ls[i]
                    ls[i] = ls[i + 1]
                    ls[i + 1] = temp
    
    bobleSotr(li)
    print(li)
    

    递归调用

    • 作用:做计算器,小括号嵌套
    • python自身有保护,递归调用次数超过某个值就会抛异常
    • 斐波那契数列
    • 0 1 1 2 3 5 8 13 21 34 55 89
    def fun1(num):
        if num == 1:
            return 0
        elif num == 2:
            return 1
        else:
            return fun1(num - 1) + fun1(num - 2)
    
    ret = fun1(9)
    print(ret)
    

    相关文章

      网友评论

          本文标题:python03-函数

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