作业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)}))