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、写函数,,用户传入修改的文件名,与要修改的内容,执行函数,完成批了修改操作

猜你喜欢

转载自www.cnblogs.com/marathoner/p/10258180.html