(1)python 实现向班级中添加学生、删除学生、查看学生、按照指定条件排序(使用面向对象的思想):
设计一个学生类
属性:姓名、学号、年龄、成绩
设计一个班级类
属性:班级代号,所有学生
要求:实现向班级中添加学生、删除学生、查看学生、按照指定条件排序
#实现向班级中添加学生、删除学生、查看学生、按照指定条件排序
class Student: #定义学生类
def __init__(self,name,school_num,age,grade):
self.name = name
self.school_num = school_num
self.age = age
self.grade = grade
def __getitem__(self, item): #使其能够通过下标获取值
return self.__dict__.get(item)
class Banji: #定义班级类
def __init__(self,num,lt): #lt为一个列表
self.num = num
self.lt = lt
def add(self,student): #增加学生方法
self.lt.append(student)
def shanchu(self,student): #删除学生方法
self.lt.remove(student)
def see_student(self,num,key): #查看学生,num为名字或学号等,key为num的类型
for i in range(len(self.lt)):
if num == self.lt[i][key]:
break
print("姓名:{},学号:{},年龄:{},成绩:{}".format(self.lt[i].name,self.lt[i].school_num,self.lt[i].age,self.lt[i].grade))
def paixv(self,key): #对学生进行排序,key为排序标准,比如按成绩排序
for i in range(len(self.lt) - 1):
for j in range(len(self.lt) - 1 - i):
if self.lt[j][key] > self.lt[j + 1][key]:
t = self.lt[j]
self.lt[j] = self.lt[j + 1]
self.lt[j + 1] = t
#测试代码
student = Student('mao',14,18,100)
student1 = Student('chen',15,17,99)
student3 = Student('shang',22,23,99)
test = Banji(302,[])
test.add(student)
test.add(student1)
test.add(student3)
#test.shanchu(student)
#test.see_student('xynu')
#print(test.lt)
print(test.lt[1].age)
test.paixv('age')
#print(test.lt[0].age)
print(test.lt[1].age)
test.see_student('mao','name')
#test.see_student(15,'school_num')
(2)python 将歌词解析封装成类,要求:提供一个方法(根据时间返回歌词)(面向对象思想)
#将歌词解析封装成类,要求:提供一个方法(根据时间返回歌词)
class Song: #定义歌词类
def __init__(self,song):
self.song = song
class Song_jiexi: #定义歌词解析函数
def __init__(self,song_word):
self.song_word = song_word
def chazhao_time(self,t):
# 准备一个字典,用来保存歌曲信息
song_dict = {}
# 准备一个字典,用来保存歌词信息
lrc_dict = {}
# 按照换行进行切割
str_list = (self.song_word.song).splitlines()
# 遍历处理
for string in str_list:
# 判断是否是歌词信息
if string[1].isdecimal():
# [02:11.55][01:50.60][00:22.63]穿过幽暗的岁月
# 按照']'进行切割
lrc_list = string.split(']')
# 提取歌词信息
lrc_info = lrc_list[-1]
# 提取时间信息
time_info = lrc_list[:-1]
# 遍历处理时间信息
for time_str in time_info:
# [00:00.70
# 去掉左边的'['
time_str = time_str[1:]
# 00:00.70
# 按照':'进行切割
time_info_list = time_str.split(':')
# 提取分钟
time_min = float(time_info_list[0])