IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 面向对象练习(学生类) -> 正文阅读

[Python知识库]面向对象练习(学生类)

目录

一、题目描述

二、分析

三、代码展示


一、题目描述

  1. 学生类Student: 属性:学号,姓名,年龄,性别,成绩

  2. 班级类Grade: 属性︰班级名称,班级中的学生【使用列表存储学生】

  3. 方法??

1.查看该班级中的所有学生的信息

⒉.查看指定学号的学生信息 ?

3.查看班级中成绩不及格的学生信息

4.将班级中的学生按照成绩降序排序

二、分析

①首先创造一个学生类,类中包括其五个属性(学号,姓名,年龄,性别,成绩 )

②因为有需求是展示学生信息,所以此时需要重写__str__方法,为的是代码简介明了以及输出信息时方便

③创建一个班级类,类中包括其两个属性(班级名称,班级中的学生【使用列表存储学生】),初始为空,接收的是一个列表,这样方便的是在进行输出时因为重写了__str__方法所以可以直接输出其信息;之前的做法是将对象的地址传进去,而此时要进行输出的时候只能通过对象地址去调用其信息,一个一个的调用,而不能直接全部输出,这样代码就很冗余。

④创造对象实例

三、代码展示

# -*- coding: utf-8 -*-
class Studnet:
    def __init__(self,stu_id,name,age,sex,score):
        self.stu_id = stu_id
        self.name = name
        self.age = age
        self.sex = sex
        self.score = score

    def __str__(self):#重写输出方法,也就是格式化输出
        return "【学号:{},姓名:{},年龄{},性别{},成绩{}】".format(
            self.stu_id,self.name,self.age,self.sex,self.score
        )

    __repr__ = __str__
class Grade:
    def __init__(self,class_name,student_list=None):#传进来的是一个列表,方便后续遍历
        self.class_name = class_name
        if student_list == None:
            self.student_list = []
        self.student_list = student_list

    def show_student(self):
        print(f'{self.class_name}班级学生信息为:')
        for j in self.student_list:#取出来的是对象,而不是对象的地址,此时输出对象就会调用到重写的格式化方法
            print(j)
            # print(f'学号:{j.stu_id},姓名:{j.name},性别:{j.sex},年龄:{j.age},成绩:{j.score}')#此行是之前存入的是对象地址,输出时只能依次调用对象地址的属性

    #def add_student(self,*args):
        #for i in args:
            #self.student_list.append(i)

    def show_student_id(self,arge):#判断学号
        for i in self.student_list:
            if i.stu_id == arge:
                print(f'学号{i.stu_id}学生的信息是:{i}')
                break
                # print(f'学号为:{i.stu_id}的信息为:')
                # print(f'学号:{i.stu_id},姓名:{i.name},性别:{i.sex},年龄:{i.age},成绩:{i.score}')
        else:
            print(f'学号{arge}插无此人')
    def show_student_score(self):
        flag = False
        print('班级中成绩不及格的为')
        for i in self.student_list:
            if i.score < 60:
                flag = True
                print('{}班不及格学生的信息是{}'.format(self.class_name, i))
                # print(f'学号:{i.stu_id},姓名:{i.name},性别:{i.sex},年龄:{i.age},成绩:{i.score}')
        if not flag:
            print('{}班很棒没有不及格的学生'.format(self.name))

    def show_student_sort(self):
        # for i in range(len(self.student_list) - 1):
        #     for j in range(len(self.student_list) - 1):
        #         if self.student_list[j].score < self.student_list[j + 1].score:
        #             self.student_list[j] , self.student_list[j + 1] = self.student_list[j + 1],self.student_list[j]
        # print('排序后的班级学生信息为:')
        # for j in self.student_list:
        #     print(f'学号:{j.stu_id},姓名:{j.name},性别:{j.sex},年龄:{j.age},成绩:{j.score}')
        self.student_list.sort(key=lambda stu: stu.score, reverse=True)#排序采用的是匿名函数
        for x in self.student_list:
            print(x)

s1 = Studnet('001','张三','20','男',90)
s2 = Studnet('002','李四','27','男',30)
s3 = Studnet('003','王五','10','女',60)
s4 = Studnet('004','赵柳','23','男',80)
s5 = Studnet('005','马七','89','女',50)
st_list = [s1,s2,s3,s4,s5]

g1 = Grade('火箭班',st_list)
# g1.add_student(st_list)
g1.show_student()
g1.show_student_id('003')
g1.show_student_score()
g1.show_student_sort()




  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-05-01 15:42:14  更:2022-05-01 15:42:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 16:49:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码