作业10

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

import os


def modify(file, old_str, new_str):
    with open(file, "r", encoding="utf-8") as f1, \
            open("{}.swap".format(file), "w", encoding="utf-8") as f2:
        for line in f1:
            line = line.replace(old_str, new_str)
            f2.write(line)
    os.remove(file)
    os.rename("{}.swap".format(file), file)


# modify("课程代码.py","嘟嘟喂嘟嘟","#")

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

def all_count(inp_str):
    dic = {"digit": 0, "alpha": 0, "space": 0, "else": 0}
    for i in inp_str:
        if i.isdigit():
            dic["digit"] += 1
        elif i.isalpha():
            dic["alpha"] += 1
        elif i.isspace():
            dic["space"] += 1
        else:
            dic["else"] += 1
    return dic


# print(all_count("asdsssdddaaa@#%^123412    "))

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

def moni(obj):
    print(len(obj)>5)

# moni([3,4,5])
# moni("24fsd")
# moni((1,2,4,5,7,6))

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

# print(type([1]) is list)

def cut_list(lis):
    if type(lis) is list:
        if len(lis) > 2:
            lis = lis[0:2]
            return lis
        else:
            return lis
    else:
        return "不是列表"

# print(cut_list([32,5,3,346,]))

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

def odd_list(obj):
    if type(obj) is list or type(obj) is tuple:
        return list(obj[1::2])
    else:
        return "不是列表和元组"

# print(odd_list([1,2,3,4,5,6,7]))
# print(odd_list((1,2,3,4,5,6,7,8)))
# print(odd_list("1234567"))

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

dic =

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

def cut_value(dic):
    if type(dic) is dict:
        for k,v in dic.items():
            if type(v) is str or type(v) is list:
                if len(v)>2:
                    dic[k]=v[:2]
            else:
                print("字典内含非字符串和列表的元素")
                break
        else:
            return dic
    else:
        print("不是字典")

dic = {"k1": "v1v1", "k2": [11,22,33,44]}
print(cut_value(dic))
print(cut_value([1,2,3,54,6]))
print(cut_value({"k1": "v1v1", "k2": (11,22,33,44)}))
 posted on 2020-03-18 15:02  wwwpy  阅读(295)  评论(0编辑  收藏  举报