python测试一
1,写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
""" 2,写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。 """ def nmber(ob_j): a = [ob_j[i] for i in range(len(ob_j)) if not i % 2 == 0] return a list = [0, 1, 2, 3, 4, 5, 6, 7, 8] b=nmber(list) print(b) #[1, 3, 5, 7]
2,写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
""" 3,写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。 """
def send(str, lis, tupe):
if len(str) > 5:
print("大于5")
if len(lis) > 5:
print("大于5")
if len(tupe) > 5:
print("大于5")
a = "ashjdhajd"
b = [1, 2, 3,]
c = (1, 2, 3, 4, 5, 6)
send(a, b, c)
3、写函数,检查传入列表的长度,如果大于2,将列表的前两项内容返回给调用者。
def funtion(ob_j): if len(ob_j) > 2: return ob_j[0:2] li = [1, 2, 3, 4, 5, 6, 7] print(funtion(li))
4,写函数,计算传入函数的字符串中, 数字、字母、空格 以及 其他内容的个数,并返回结果。
# 定义数字,字母,空客变量 # 便利穿进来的字符串 # 判断字符式什么累加变量 # 返回结果 def funtion(ob_j): nubmber = 0 # 数字 blank = 0 # 空客 other = 0 # 其他 Letter = 0 # 字母 for s in range(0,len(ob_j)): if ob_j[s].isalpha(): # 判断是否为全为字母 Letter += 1 elif ob_j[s].isdigit(): # 判断是否为数字 nubmber += 1 elif ob_j[s].isspace(): # 判断是否为空客 blank += 1 else: other += 1 return "该字符串中数字有%d个,字母%d个,空格%d个,其他的%d个." % (nubmber, Letter, blank, other) a = "hhhasd55 45212" print(funtion(a))
5,写函数,接收两个数字参数,返回比较大的那个数字。
def size(x, y): add = lambda x, y: x > y a = add(x, y) if a: return x else: return y print(size(4, 3))
6、写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
dic = {"k1": "v1v1", "k2": [11,22,33,44]}
PS:字典中的value只能是字符串或列表
dic = {"k1": "v1v1", "k2": [11, 22, 33, 44]} def size2(dic): a = [v[:2] for i, v in dic.items() if len(v) > 2] return a size2(dic)
7,写函数,此函数只接收一个参数且此参数必须是列表数据类型,此函数完成的功能是返回给调用者一个字典,此字典的键值对为此列表的索引及对应的元素。例如传入的列表为:[11,22,33] 返回的字典为 {0:11,1:22,2:33}。
def index(agx): dic={i:d for i,d in enumerate(agx)} return dic a=[11,22,33] print(index(a)) {0: 11, 1: 22, 2: 33}
8、函数,函数接收四个参数分别是:姓名,性别,年龄,学历。用户通过输入这四个内容,然后将这四个内容传入到函数中,此函数接收到这四个内容,将内容追加到一个student_msg文件中。
import json def login(name, gender, age, education): dic = {} dic["name"] = name dic["gender"] = gender dic["age"] = age dic['education'] = education with open("./student_msg.txt", "a+", encoding="utf8") as f: json.dump(dic, f, ensure_ascii=False) name = "wang" age = 18 gender = "nv" education = "大学" login(name=name, age=age, gender=gender, education=education)
9,对第9题升级:支持用户持续输入,Q或者q退出,性别默认为男,如果遇到女学生,则把性别输入女。
import json def login(name,age, education,gender="男"): dic = {} dic["name"] = name dic["gender"] = gender dic["age"] = age dic['education'] = education with open("./student_msg.txt", "a+", encoding="utf8") as f: json.dump(dic, f, ensure_ascii=False) while True: quet = input("Q/q退出") if quet.upper() == "Q": break name = input("name") age = input("age") gender = input("gender") print(type(gender),gender) education = input("education") if gender: login(name=name, age=age, gender=gender, education=education) else: login(name=name, age=age, education=education)
10、写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作(升级题)
# def new_flie_content(name,old_content,new_content): # """ # :param name:修改的文件名 # :param old_content: 要修改的内容 # :param new_content: 添加的内容 # :return: # """ # file_data="" # # r 已只读的方式取打开文件,文件指针放在文件开头 # with open(name,"r",encoding="utf-8") as f : # for lien in f: # if old_content in lien: # lien=lien.replace(old_content,new_content) # # file_data+=lien # # # with open(name,"w",encoding="utf8") as f: # f.write(file_data) # # # # new_flie_content("student_msg.txt","w","a") """ 二、把原文件内容和要修改的内容写到新文件中进行存储的方式 """ # def file_alter(file_nam,old_str,new_str): # # """ # :param file_nam:文件名 # :param old_str: 旧内容 # :param new_str: 新内容 # :return: # """ # # with open(file_nam,"r",encoding="utf8") as f1,open("{}.bak".format(file_nam),"w",encoding="utf8") as f2: # for lien in f1: # if old_str in lien: # lien =lien.replace(old_str,new_str) #Replace 函数使用另一个字符串替换字符串的指定部分指定的次数 # # f2.write(lien) # # # # file_alter("./student_msg.txt","18","19") """ # 2.2 python 使用正则表达式 替换文件内容 re.sub 方法替换 """ import os, re def alter(file, old_str, new_str): with open(file, "r", encoding="utf8")as f, open("%.bak".format(file), "w", encoding="utf8") as f2: """ re.sub共有五个参数。 其中三个必选参数:pattern, repl, string 两个可选参数:count, flags pattern,表示正则中的模式字符串, repl,就是replacement,被替换,的字符串的意思。 string,即表示要被处理,要被替换的那个string字符串。 """ for line in f: f2.write(re.sub(old_str, new_str, line)) # 删除原文件名 os.remove(file) # 创建源文件名(内容是修改的) os.rename("%s.bak" % file, file) """ os.rename(src, dst) src -- 要修改的目录名 dst -- 修改后的目录名 """ alter("student_msg.txt", "aang", "tang")