day08作业---函数
'''
2.写函数,检查获取传入列表或元组对象的所有奇数位
索引对应的元素,并将其作为新列表返回给调用者。
'''
#学会了 原来 range(len(iter)) 是 从零到len-1 的数的组合 建新放在函数里就可以
#学会了 原来 range(len(iter)) 是 从零到len-1 的数的组合 建新放在函数里就可以 def hanshu1(can1): new_line1 = [] for i in range(1,len(can1),2): new_line1.append(can1[i]) return new_line1 lis1 = [1,9,3,4,5,6,7] tup1 = (1,9,3,4,5,6,7) ret1 = hanshu1(lis1) print(ret1) ret2 = hanshu1(tup1) print(ret2) #以下两者相同 都是0-4 顾头不顾尾 # for a in range(5): # print(a,end=' ') # for a in range(0,5): # print(a,end=' ')
#3 3.写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
# 学到了 不是写 print 而是写 return 而且把 返回的值 print即可
def hanshu2(can2): if len(can2)>5: return '大于5!' else: return '不大于5!' i1 = [1,2,3] i2 = '111112' i3 = (1,2,'1',[]) print(len(i2)) print(hanshu2(i1)) print(hanshu2(i2)) print(hanshu2(i3))
'''
4.写函数,检查传入列表的长度,如果大于2,
那么仅保留前两个长度的内容,并将新内容返回给调用者。
'''#是不是只执行一个 return 只要第一个return 有了值 就不走下一个了 是!
def hanshu3(can3): new_list1 = [] if len(can3)>2: for i in range(2): new_list1.append(can3[i]) else: return can3 return new_list1 print(hanshu3([5]))
#写函数,检查传入list, str ,tuple的长度,如果大于2,
def hanshu3(can3): if len(can3)>2: a = can3[0:2] else: return can3 return a print(hanshu3((1,2,3)))
'''
5.写函数,计算传入函数的字符串中,
[数字]、[字母]、[空格] 以及 [其他]的个数,并返回结果。'''
def hanshu4(can4): st = 0 zim = 0 kongg = 0 qit = 0 for can in can4: if can.isdigit(): st += 1 elif can.isalpha(): zim +=1 elif can==' ': kongg +=1 else: qit +=1 return st,zim,kongg,qit shu,zi,kong,qi = hanshu4('adada_ 11%%%') print('数字:{},字母:{},空格:{},其它:{}'.format(shu,zi,kong,qi)) print(hanshu4('adada_ 11%%%'))
#6.写函数,接收两个数字参数,返回比较大的那个数字。
def hanshu5(can51, can52): return can51 if can51 > can52 else can52 print(hanshu5(1,1))
'''
7.写函数,检查传入字典的每一个value的长度,如果大于2,
那么仅保留前两个长度的内容,并将新内容返回给调用者。
dic = {"k1": "v1v1", "k2": [11,22,33,44]}
PS:字典中的value只能是字符串或列表
'''
#学会了 用列表存值 然后用
# for rang() 删后面的方法 都是用的这些
# 因为 对字典进行操作 所以 都输出can6
def hanshu6(can6): if len(can6)>2: lis = [] for key in can6: lis.append(key) for i in range(2,len(can6)): print(i) del can6[lis[i]] else: return can6 return can6 dic = {"k1": "v1v1",'k3':1, "k2": [11,22,33,44] } print(hanshu6(dic))
读题读错了 是改值 的内容 两位 改之
dic = {"k1": "v1v1", "k2": [11,22,33,44]} def hanshu7(can7): for a in can7: if len(can7[a])>2: can7[a] = can7[a][0:2] return can7 print(hanshu7(dic))
'''
8.写函数,此函数只接收一个参数且此参数必须是列表数据类型,
此函数完成的功能是返回给调用者一个字典,此字典的键值对为此列表的索引及对应的元素。
例如传入的列表为:[11,22,33] 返回的字典为 {0:11,1:22,2:33}。'''
def hanshu7(can7): i = 0 dic1 = {} for list2 in can7: dic1[i] =list2 i += 1 return dic1 print(hanshu7([11,22,33]))''
'''
9.写函数,函数接收四个参数分别是:
姓名,性别,年龄,学历。用户通过输入这四个内容,
然后将这四个内容传入到函数中,此函数接收到这四个内容,
将内容追加到一个student_msg文件中。'''
def hanshu8(can81, can82,can83,can84): with open('student_msg','a',encoding='utf-8') as f: f.write(can81) f.write(can82) f.write(str(can83)) f.write(can84) name,gender,age,education = 'liuyang','男',25,'本科' print(name,gender,age,education) hanshu8(name,gender,age,education)
'''
# 10.对第9题升级:支持用户持续输入,Q或者q退出,
# 性别默认为男,如果遇到女学生,则把性别输入女。'''
# # def hanshu8(can81, can82, can83='男' , can84): # 默认的不能再待赋前
# 因为 把后面的 改成 strip() 浪费了诸多时间 打印出来就好了
# 就是一个赋值 的问题 因为 split(',')从中作梗,耽误了,
# 付给他值然后split(‘,’)格式就可以了
'''
def hanshu8(can81, can83,can84,can82='男'): with open('student_msg', 'a', encoding='utf-8') as f: f.write(can81) f.write(str(can83)) f.write(can84) f.write(can82) while 1 : # name, gender, age, education = 'liuyang', '男', 25, '本科' # a = input('输入你的内容:') list3 = input('name,age,education,gender:(输入q\Q退出)') if list3.lower() =='q': break else: list2 = list3.split(',') print(list2) name, age, education,gender = list2 print(name, age, education,gender) hanshu8(name, age, education,gender)
'''
11. 写函数,用户传入修改的文件名,
与要修改的内容,执行函数,完成整个文件的批量修改操作(升级题)。''' #肯定得先新建文件
用r+
def hanshu9(file_name , old_ele,new_ele): # with open(file_name)as read_f,open(file_name,'w')as write_f: with open(file_name,"r+")as read_f: a=read_f.read().replace(old_ele, new_ele) # read_f.seek(0,0) read_f.write(a) read_f.truncate()#如果比原有的短。自动覆盖 如果比原有的等长没事 hanshu9('genggai','dalaoa','laoshi')
用删一个 赋值的方法
def hanshu9(file_name , old_ele,new_ele,old_name): with open(file_name)as read_f , open(old_name,'w')as write_f: write_f.write(read_f.read().replace(old_ele, new_ele)) os.remove(file_name) os.rename(file_name,old_name) hanshu9('genggai','dalaoa','laoshi','a')