欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

day 9 - 2 函数练习

程序员文章站 2022-04-19 10:03:04
1、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。 2、写函数,判断用户传入的值(字符串、列表、元组)长度是否大于 5 。 3、写函数,检查传入列表的长度,如果大于 2,那么仅保留前两个长度的内容,并将新内容返回给调用者。 4、写函数,计算传入字符串中【 ......

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

def func(lis):
    print(lis[1::2])    #取偶数
    return lis[::2]     #取计数
    
f=[1,2,3,4,5,6]
print(func(f))

 

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

#两行就搞定
def func2(lis):
    return len(lis)>5 #大于 5 则自动返回 true

f=[1,2,3,4,5,6]
print(func2(f))
#比较 low 的方法
def func2(lis):
    k = len(lis)
    if k > 5:
        print("大于 5")
    else:
        print("小于等于 5")

f=[1,2,3,4,5,6]
func2(f)

 

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

#无需判断列表长度是否大于 2 切片都会自动截取对应位置的值的
def func3(lis):
    return lis[0:2]

f=[1,2,3,4,5,6]
print(func3(f))

 

4、写函数,计算传入字符串中【数字】、【字母】、【空格】 以及 【其他】的个数,并返回结果。

#运用字典来储存和调用值
def func4(str):
    dic = {'letter':0,"num":0,"space":0,'other':0}
    for i in str:
        if i.isalpha():
            dic['letter'] +=1
        elif i.isdigit():
            dic['num'] += 1
        elif i ==" ":
            dic['space'] += 1
        else:
            dic["other"] += 1
    return dic

f="%123abc   qwe789%"
print(func4(f))
#比较 low 的 idea
def func4(str):
    letter = 0
    num = 0
    space = 0
    other = 0
    for i in str:
        if i.isalpha():
            letter +=1
        elif i.isdigit():
            num += 1
        elif i ==" ":
            space += 1
        else:
            other += 1
    return(letter,num,space,other)

f="%123abc   qwe789%"
print(func4(f))

 

5、写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容,并返回结果。

def func5(space):
    if type(space) is str:    #参数是字符串
        for i in space:
            if i == " ":
                return true
    if type(space) is list or type(space) is tuple: #参数为列表或元祖
        for i in space:
            if not i:
                return true
    
f="%123abc   qwe789%"
print(func5(f))

f2 = [1,2,3]
print(func5(f2))

f3 = (1,2,"",3)
print(func5(f3))

 

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

dic = {"k1": "v1v1", "k2": [11,22,33,44]}
def func6(d):
    for i in d:
        if len(d[i]) > 2:
            d[i] = d[i][:2]
    return d

print(func6(dic))
print(func6({'name':'ysg','age':'1234'}))

 

7、写函数,接收两个数字参数,返回比较大的那个数字。

#三元运算
def func7(a,b):
    return a if a>b else b
   
print(func7(56,23))
#比较 low 的 idea
def func7(a,b):
    if a>b:
        return a
    else:
        return b
print(func7(23,56))

 

8、写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作(进阶)。

#其实传入函数中的是三个参数
#文件名 修改的前内容 修改后的内容
def func8(filename,a,b):
    with open(filename,encoding='utf-8') as f,open('%s.bak'%filename,'w',encoding='utf-8')as f2:
        for line in f:
            if a in line:
                line = line.replace(a,b)
            f2.write(line)

    import os
    os.remove(filename)     # 删除文件
    os.rename('%s.bak'%filename,filename)   # 重命名文件
                
print(func8('d:/py/log/test.txt','in','in'))