day9.初始函数练习题
1 1.写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。 2 def new(args): 3 a = [] 4 for I in range(1,len(args),2): 5 a.append(args[I]) ### return args[0::2] 6 return a 7 8 ret = new([10,11,12,13,14,15,16]) 9 print(ret) 10 11 2.写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。 12 13 def five(args): 14 if len(args) > 5: 15 return 'yes' 16 else: 17 return 'no' 18 19 ret = five('世上只有') 20 print(ret) 21 22 3.写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。 23 def two(args): 24 a = [] 25 if len(args) > 2: ### return args[0:2] 26 for I in range(2): 27 a.append(args[I]) 28 else: 29 a.append(args) 30 return a 31 32 ret = two([1,2,3]) 33 print(ret) 34 35 4.写函数,计算传入函数的字符串中,[数字]、[字母]、[空格] 以及 [其他]的个数,并返回结果 36 def jisuan(args): 37 shuzi = 0 38 alpha = 0 39 space = 0 40 qita = 0 41 for I in args: 42 if I.isdigit(): 43 shuzi += 1 44 elif I.isalpha(): 45 alpha += 1 46 elif I.isspace(): 47 space += 1 48 else: 49 qita += 1 50 return shuzi,alpha,space,qita 51 52 ret = jisuan("12345 ") 53 print(ret) 54 55 56 ### 利用字典方法来解决: 57 58 abc = "sa vw,vwv.avvv" 59 dic = {'digit':0,'alpha':0,'space':0,'qita':0} 60 for I in abc: 61 if I.isdigit(): 62 dic['digit'] += 1 63 elif I.isalpha(): 64 dic['alpha'] += 1 65 elif I.isspace(): 66 dic['space'] += 1 67 else: 68 dic['qita'] += 1 69 print(dic) 70 71 5.写函数,接收两个数字参数,返回比较大的那个数字。 72 73 def bijiao(num1,num2): 74 return max(num1,num2) 75 num = input('请输入两个数字,逗号隔开:').split(',') 76 ret = bijiao(num[0],num[1]) 77 print(ret) 78 79 6.写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。 80 dic = {“k1”: “v1v1”, “k2”: [11,22,33,44]} 81 PS:字典中的value只能是字符串或列表 82 83 def two(args): 84 for k,v in args.items(): 85 if len(v) > 2: 86 args[k] = args[k][0:2] 87 return args 88 ret = two({'k1': 'v1v1', 'k2': [11, 22, 33, 44]}) 89 print(ret) 90 91 用字典的方法解决: 92 93 # dic = {'k1': 'v1v1', 'k2': [11, 22, 33, 44]} 94 # for k,v in dic.items(): 95 # if len(v) > 2: 96 # dic[k] = dic[k][0:2] 97 # print(dic) 98 99 100 7.写函数,此函数只接收一个参数且此参数必须是列表数据类型, 101 此函数完成的功能是返回给调用者一个字典,此字典的键值对为此列表的索引及对应的元素。 102 例如传入的列表为:[11,22,33] 返回的字典为 {0:11,1:22,2:33}。 103 104 def fan(args): 105 a = {} 106 for i in range(len(args)): 107 a[i] = args[i] 108 return a 109 110 ret = fan([11,22,33]) 111 print(ret) 112 113 8.写函数,函数接收四个参数分别是:姓名,性别,年龄,学历。 114 用户通过输入这四个内容,然后将这四个内容传入到函数中,此函数接收到这四个内容,将内容追加到一个student_msg文件中。 115 116 def inp(name,sex,age,xueli): 117 f = open('student_msg',mode='a',encoding='utf-8') 118 f.write('{}\t{}\t{}\t{} \n'.format(name,sex,age,xueli)) 119 print('追击成功') 120 return 121 122 na = input('输入名字:') 123 se = input('输入性别:') 124 ag = input('输入年龄:') 125 xe = input('输入学历:') 126 inp(na,se,ag,xe) 127 128 9.对第9题升级:支持用户持续输入,Q或者q退出,性别默认为男,如果遇到女学生,则把性别输入女。 129 130 def inp(name,age,xueli,sex = '男'): 131 f = open('student_msg',mode='a',encoding='utf-8') 132 f.write('{}\t\t{}\t\t{}\t\t{} \n'.format(name,age,xueli,sex)) 133 print('追击成功') 134 return 135 136 while True: 137 na = input('输入名字:') 138 if na.strip().lower() == 'q': 139 break 140 else: 141 ag = input('输入年龄:') 142 xe = input('输入学历:') 143 se = input('输入性别:') 144 if se == '女': 145 inp(na,ag,xe,se) 146 else: 147 inp(na,ag,xe) 148 149 10.写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作(升级题)。 150 151 def xiu(file,file2,qian,hou): 152 with open(file,mode='r+',encoding='utf-8') as f1,open(file2,mode='w',encoding='utf-8') as f2: 153 for line in f1: 154 if qian in line: 155 line = line.replace(qian,hou) 156 f2.write(line) 157 import os 158 os.remove(file) 159 os.rename(file2,file) 160 return 161 file1 = input('请输入你要修改的文件带地址:') 162 file2 = input('请随意输入一个文件名,重复即可:') 163 name1 = input('请输入你要替换的关键字:') 164 name2 = input('请输入你想要替换的关键字:') 165 xiu(file1,file2,name1,name2) 166 167 11.写一个函数完成三次登陆功能,再写一个函数完成注册功能(升级题) 168 169 def login(): 170 count = 0 171 while count < 3: 172 username = input('请输入用户名:') 173 password = input('请输入密码:') 174 if username.strip() == 'jiu' and password.strip() == '123456': 175 print('登陆成功') 176 break 177 else: 178 last = 2 - count 179 print('用户或密码名错误,剩余次数',last) 180 count += 1 181 182 def register(): 183 username = input('请输入注册的用户名:') 184 password = input('请输入要注册的密码:') 185 with open('user_msg',mode='a',encoding='utf-8') as f1: 186 f1.write('{}:{} \n'.format(username,password)) 187 print('注册成功用户名和密码为:'+ username+password)