zoukankan      html  css  js  c++  java
  • python闯关_Day06

    函数式编程

    python的函数式编程,需要关注以下几个点。

    1. 参数:有无参数、形参和实参的区别、参数可以是哪些类型,参数的读取顺序等。

    2. 返回值:未指定的情况下,缺省是有返回值的。

    按照之前的程序经验,调用函数前需要将环境参数压栈,再压入参数(PUSH),再跳转到函数,再由函数反向读取压入的参数(POP)。通过这节课的学习,python也是类似的运行逻辑。

    函数返回时,需要将返回值压栈,再退出函数,由父“进程”弹出并读取压入的返回值。python有区别的是返回值的类型不是写在函数声明的那一行,而是由函数的返回值来确定的。

    对于没有返回值的函数,可以理解为“方法”,调用函数的几种方法 

    1 语句形式:foo()
    2 表达式形式:3*len('hello')
    3 当中另外一个函数的参数:range(len('hello'))

    在练习中,打算在函数内修改全局的字典,没有成功,作业后再试试。

    练习:

    1、写函数,,用户传入修改的文件名,与要修改的内容,执行函数,完成批了修改操作

    def MyWriteFile (strfile,strContext):
        f = open(strfile, 'w',encoding='utf-8')
        f.write(strContext)
        f.close()
    
    strfile = input('请输入文件名:')
    strContext = input('请输入需要修改的内容:')
    MyWriteFile(strfile,strContext)
    

      

    2、写函数,计算传入字符串中【数字】、【字母】、【空格】以及 【其他】的个数

    def count_str(str):
        tmp = {}
        len_str = len(str)
        i = 0
        isDig = isAlpha = isSpace = isOther = 0
        while i < len_str:
            if str[i].isdigit(): isDig +=1
            elif str[i].isalpha(): isAlpha +=1
            elif str[i].isspace(): isSpace +=1
            else : isOther +=1
            i += 1
        print("字符串:", str)
        print("数字的数量:",isDig)
        print("字母的数量:",isAlpha)
        print("空格的数量:",isSpace)
        print("其他的数量:",isSpace)
    
    str = "abcdef123 54  "
    count_str(str)
    

      

    3、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。

    def count(arg):
        if len(arg) > 5:
            print(arg, "的长度大于5")
    
    count('abcdddd')
    count([1,1,1,1])
    count((1,2))
    

      

    4、写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。

    def count1(arg):
        newarg = arg
        if len(arg) > 2:
            newarg = arg[:2]
        return(newarg)
    
    print(count1('abcde'))
    print(count1([1,2,2,3,4,5]))
    

      

    5、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。

    def ModiList(arg):
        new_arg = []
        i = 0
        while i < len(arg):
            new_arg.append(arg[i])
            i += 2
        return(new_arg)
    
    print (ModiList((1,2,3,4,5,6,7)))
    

      

    6、写函数,检查字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。

    dic = {"k1": "v1v1", "k2": [11,22,33,44]}

    PS:字典中的value只能是字符串或列表

    def CutDict(**arg):
        for key in arg:
            NewValue = arg[key]
            if len(NewValue) > 2:
                NewValue = NewValue[:2]
            arg[key] = NewValue
        return(arg)
    
    arg = {"k1": "v1v1", "k2": [11,22,33,44]}
    arg = CutDict(**arg)
    print (arg)
    

      

    1、写函数,,用户传入修改的文件名,与要修改的内容,执行函数,完成批了修改操作
  • 相关阅读:
    MINIBASE源代码阅读笔记之heapfile
    MINIBASE源代码阅读笔记之HFPage
    naive cube implementation in python
    C++中对已分配空间的指针调用一个类的构造函数
    作死自救日记——不小心修改linux下/etc/sudoers权限的解决办法
    TPC-H数据导入MySQL教程
    TeX Live & TeXstudio 安装手记
    Web开发入门知识小总结
    配置静态服务器和配置nfs
    数论们
  • 原文地址:https://www.cnblogs.com/marathoner/p/10258180.html
Copyright © 2011-2022 走看看