源代码为:
'''
实验题目:学生成绩管理
将学生对象存入列表中,并按成绩对学生进行排序,并获取成绩最高和成绩最低的学生信息,并将最高分和最低分的学生从列表删除,最后再对列表进行拷贝,对拷贝的列表进行翻转输出。
'''
class Student:
def __init__(self, name, age, score):
self.name = name
self.age = age
self.score = score
if __name__ == '__main__':
stu1 = Student('叶子', 19, 95)
stu2 = Student('hh', 20, 50)
stu3 = Student('xx', 21, 79)
stu4 = Student('可爱多', 20, 75)
stu5 = Student('夏霖', 25, 100)
studentList = []
studentList.append(stu1)
studentList.append(stu2)
studentList.append(stu3)
studentList.append(stu4)
studentList.append(stu5)
studentList.sort(key=lambda stu: stu.score, reverse=True)
lowest = studentList.pop(-1)
highest = studentList.pop(0)
studentList_copy = studentList.copy()
studentList_copy.reverse()
for item in studentList_copy:
print(item)
运行结果为:
问题原因
由于item是在studentList_copy列表中循环,而此时调用Student类,没有返回值,因此只能将对象的地址赋值给item(如果有更好的解释欢迎大佬指出,还在查阅一下午资料最终只能这样解释,谢谢各位的指正)
问题解决
第一种方式就是调用item.属性名的方式,此时的stu已经赋值给item。 第二种方式是使用__str__内置方法返回字符串输出(就是注释的那部分,刚解决这个问题的时候没有想到第一种方法,在查阅资料的路上突然发现了第一种简单的方法,所以写下来给跟我一样粗心的孩子提个醒),此时以列表形式输出。 最后,鉴于理解不深,欢迎各位大佬指正不足~
|