# 1.写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
def odd_index(iterable):
return iterable[1::2]
# 2.写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
def longer_than_5(iterable):
# return True if len(iterable) > 5 else False
return len(iterable) > 5
# 3.写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
def retain_2(list):
return list if len(list) <= 2 else list[:2]
# 4.写函数,计算传入函数的字符串中,[数字]、[字母] 以及 [其他]的个数,并返回结果。
def count_type(string):
count_list = [0, 0, 0]
for char in string:
if char.isdecimal() == True:
count_list[0] += 1
elif char.isalpha() == True:
count_list[1] += 1
else:
count_list[2] += 1
return count_list
# 5.写函数,接收两个数字参数,返回比较大的那个数字。
def cmp(digit_1, digit_2):
return digit_1 if digit_1 > digit_2 else digit_2
# 6.写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
# dic = {"k1": "v1v1", "k2": [11,22,33,44]}
# PS:字典中的value只能是字符串或列表
def retain_value_2(dic):
for key in dic.keys():
dic[key] = dic[key] if len(dic[key]) < 2 else dic[key][:2]
return dic
# 7.写函数,此函数只接收一个参数且此参数必须是列表数据类型,此函数完成的功能是返回给调用者一个字典,此字典的键值对为此列表的索引及对应的元素。例如传入的列表为:[11,22,33] 返回的字典为 {0:11,1:22,2:33}。
def list_to_dic(list):
dic = {}
for i in range(len(list)):
dic.setdefault(i, list[i])
return dic
# 8.写函数,函数接收四个参数分别是:姓名,性别,年龄,学历。用户通过输入这四个内容,然后将这四个内容传入到函数中,此函数接收到这四个内容,将内容追加到一个student_msg文件中。
def append_student(name, gender, age ,degree):
with open(r'03 作业\student_msg.txt', encoding='utf-8', mode='a') as file_handler:
file_handler.write(name + ' ' + gender + ' ' + age + ' ' + degree + '\n')
while 1:
name = input('name:\n')
gender = input('gender:\n')
age = input('age:\n')
degree = input('degree:\n')
append_student(name, gender, age, degree)
if input('continue append?(input q or Q to exit)\n').upper() == 'Q':
break
# 9.对第9题升级:支持用户持续输入,Q或者q退出,性别默认为男,如果遇到女学生,则把性别输入女。
def append_student(name, age ,degree, gender='girl'):
with open(r'03 作业\student_msg.txt', encoding='utf-8', mode='a') as file_handler:
file_handler.write(name + ' ' + gender + ' ' + age + ' ' + degree + '\n')
while 1:
name = input('name:\n')
gender = input('gender:\n')
age = input('age:\n')
degree = input('degree:\n')
if gender == '':
append_student(name, age, degree)
else:
append_student(name, age, degree, gender)
if input('continue append?(input q or Q to exit)\n').upper() == 'Q':
break
# 写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作(选做题)。
def revise_file(old_contents, new_contents, file_name):
import os
with open(r'03 作业\{}'.format(file_name), encoding='utf-8', mode='r') as file_handler_1,\
open(r'03 作业\{}.bak'.format(file_name), encoding='utf-8', mode='w') as file_handler_2:
for line in file_handler_1:
line = line.replace(old_contents,new_contents)
file_handler_2.write(line)
os.remove(r'03 作业\{}'.format(file_name))
os.rename(r'03 作业\{}.bak'.format(file_name), r'03 作业\{}'.format(file_name))
revise_file('alex', 'SB', 'alex自述')