07、day07函数相关的作业1
函数相关的作业
-
写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者
def new_len(lt): my_len = [] for i in range(len(lt)): if i % 2 != 0: my_len.append(lt[i]) return my_len print(new_len([1, 2, 3, 4, 5, 6, 7, 8, 9])) # [2, 4, 6, 8] -
写函数,判断用户传入的对象(字符串,列表,元组)长度是否大于5
def five_len(slt): return len(slt) > 5 print(five_len([1,2,3,4,5,6])) # True print(five_len('dkjaslffjdlasjkf')) # True print(five_len((1,3,4))) # False -
写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者
def two_len(li): return li[:2] if len(li) > 2 else li print(two_len([1,2,3])) -
写函数,计算传入函数的字符串中[数字]、[字母]以及[其他]的个数,并返回结果
def str_inspect(st): num_count = 0 letter_count = 0 other_count = 0 for i in st: if i.isdigit(): num_count += 1 elif i.isalpha(): letter_count += 1 else: other_count += 1 return "该字符串中,数字有:%s个,字母有:%s个,其他有:%s个" %(num_count, letter_count, other_count) print(str_inspect('sdjkf23fjds3994(#$*')) -
写函数,接收两个数字参数,返回比较大的那个数字
def max_num(a, b): return a if a > b else b print(max_num(1,2)) -
写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
dic = {"k1":"v1v1", "k2":[11,22,33,44]}
ps:字典中的value只能是字符串或列表
def dic_len2(dic): new_dic = {} for key, value in dic.items(): new_dic[key] = value[:2] return new_dic print(dic_len2({"k1": "v1v1", "s2": [11, 22, 33, 44]})) -
写函数,此函数直接收一个参数且此函数必须是列表数据类型,此函数完成的功能是返回给调用者一个字典,此字典的键值对为次联播的索引及对应的元素,例如传入的列表为:[11,22,33]返回的字典为
{0:11, 1:22, 2:33}
def replace_dic(li): new_dic = {} for i in range(len(li)): new_dic[i] = li[i] return new_dic print(replace_dic([11,22,33])) -
写函数,函数接收四个参数分别是:姓名,性别,年龄,学历。用户通过输入这四个内容,然后将这四个内容传入的函数中,此函数的接收到这四个内容,将内容追加到一个student_msg文件中
def user_msg(n, s, a, e): with open('student_msg', encoding='utf-8', mode='a') as f1: f1.write('姓名:%s, 性别:%s, 年龄:%s, 学历:%s' % (n, s, a, e)) while True: name = input('请输入姓名(Q或q退出):') if name.upper() == 'Q': break sex = input('请输入性别(Q或q退出):') if sex.upper() == 'Q': break age = input('请输入年龄(Q或q退出):') if age.upper() == 'Q': break edu = input('请输入学历(Q或q退出):') if edu.upper() == 'Q': break user_msg(name, sex, age, edu) -
对第9题升级:支持用户持续输入,Q或者q退出,性别默认为男,如果遇到女学生,则把性别输入女
-
写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作(选做题)
import os def file_0(path, old_content, new_content): # 1.以读的方式打开原文件 # 2.以写的模式创建一个新文件 with open(path, encoding='utf-8') as f1, \ open(path + '.bak', encoding='utf-8', mode='w') as f2: # 3.将原文件的内容读出来修改成新内容,写入新文件 for line in f1: # 第一次循环第一行,以此类推,每次只读一行,节省内存 new_line = line.replace(old_content, new_content) f2.write(new_line) # 写一行(读一行写一行,一行一行执行) os.remove(path) os.rename(path + '.bak', path) file_0('alex自述', 'alex', 'SB') file_0('t1', '太白', 'SB1')

浙公网安备 33010602011771号