2、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
def dan_index(itter): li=[] for i in range(len(itter)): if i%2==1: li.append(itter[i]) return li
3、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
def len_itter(itt): count=0 for i in itt: count+=1 if count>5: return "{}长度大于5".format(itt) else: return "%s 长度小于5"%itt print(len_itter([3489,34,"hello","myfu","good",78]))
4、写函数,检查传入列表的长度,如果大于2,将列表的前两项内容返回给调用者。
def it_len(itt): if len(itt)>2: return itt[:2]
5、写函数,计算传入函数的字符串中, 数字、字母、空格 以及 其他内容的个数,并返回结果。
def str_count(st): s=0 b=0 n=0 for i in st: if i.isdigit(): n+=1 if i.isalpha(): s+=1 if i.isspace(): b+=1 return "%s有%s个数字%s字母%s空格"%(st,n,s,b)
6、写函数,接收两个数字参数,返回比较大的那个数字。
def num_cam(a,b): if a>b: return a else: return b
7、写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
dic = {"k1": "v1v1", "k2": [11,22,33,44]}
PS:字典中的value只能是字符串或列表
def dic_filter(dic): for i,j in dic.items(): if len(j)>2: j=j[:2] dic.update({i:j}) return dic print(dic_filter( {"k1": "v1v1", "k2": [11,22,33,44]}))
8、写函数,此函数只接收一个参数且此参数必须是列表数据类型,此函数完成的功能是返回给调用者一个字典,此字典的键值对为此列表的索引及对应的元素。例如传入的列表为:[11,22,33] 返回的字典为 {0:11,1:22,2:33}。
#方法一 def list_trans(li): dic={} for i,j in enumerate(li): dic.setdefault(i,j) return dic print(list_trans([11,22,33])) #方法二 def list_trans(li): dic={} for i in range(len(li)): dic.setdefault(i,li[i]) return dic print(list_trans([11,22,33]))
9、写函数,函数接收四个参数分别是:姓名,性别,年龄,学历。用户通过输入这四个内容,然后将这四个内容传入到函数中,此函数接收到这四个内容,将内容追加到一个student_msg文件中。
def stu_add(name,gender,age,education): with open("stu_info.txt","r+",encoding="utf-8") as f2: data=f2.readline() f2.write("\n%s %s %s %s"%(name,gender,age,education))
10、对第9题升级:支持用户持续输入,Q或者q退出,性别默认为男,如果遇到女学生,则把性别输入女。
def stu_add(): with open ("stu_info.txt","r+",encoding="utf-8") as f1: while True: stu_add=input("请输入用户信息(以空格隔开q或Q退出):").strip() if len(stu_add.split())==3: name,age,education=stu_add.split() f1.read() f1.write("\n%s male %s %s"%(name,age,education)) continue if len(stu_add.split())==4: name,gender,age,education=stu_add.split() f1.read() f1.write("\n%s %s %s %s"%(name,gender,age,education)) continue if stu_add.upper()=="Q": exit("谢谢使用,正在退出")
11、写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作(升级题)。
def file_modify(filename,contant): import os contant_new = input("请输入修改后的内容:") with open(filename,encoding="utf-8")as f1,open("filename_new","w",encoding="utf-8") as f2: for i in f1: new_i=i.replace(contant,contant_new) f2.write(new_i) os.remove(filename) os.rename("filename_new",filename)
12、写一个函数完成三次登陆功能,再写一个函数完成注册功能(升级题)
def register(): uname=input("请输入注册名:").strip() pwd=input("请输入注册密码:").strip() pwd2=input("请重新输入密码:").strip() if pwd==pwd2: with open("info_database","w+",encoding="utf-8") as f1: f1.write("%s\n%s"%(uname,pwd)) def login(): count=0 while count<3: username=input("请输入登录名:").strip() password=input("请输入密码:").strip() with open("info_database",encoding="utf-8") as f2: u=f2.readline() p=f2.readline() if username==u.strip() and password==p.strip(): print("登录成功") break else: print("用户名或密码有误请重新输入你还有%s次机会"%(2-count)) count+=1