“Python 语言程序设计实验2023春季”实验报告

实验报告五 面向对象程序设计(5月3日 23:00截止)

实验五 面向对象程序设计

一、实验学时: 2学时

二、实验目的

  1. 掌握:Python类的定义,class关键字,创建对象的方法,访问对象中的成员。
  2. 掌握:私有成员与公有成员,数据成员与成员方法,类方法与静态方法,属性的定义与使用,混入机制。
  3. 掌握:继承的作用与Python实现。
  4. 掌握:构造函数 __ init __ (),析构函数__ del __ (),__ dd __ ()、__ mul __ ()、__ pow __ ()及其他Python类特殊方法与运算符的对应关系。

三、实验内容

1.有下面的类属性:姓名、年龄、成绩列表[语文,数学,英语],其中每门课成绩的类型为整数,类的方法如下所述:

  • (1)列表项列表项获取学生的姓名。get_name(),返回类型:str。
  • (2)获取学生的年龄。get_age(),返回类型:int。
  • (3)返回3门科目中最高的分数。get_course(), 返回类型:int。
  • 类定义好之后,可以定义同学测试如下: zm = Student('zhangming',20,[69,88,100]);返回结果: zhangming 20 100

2.设计一个Circle(圆)类,包括圆心位置、半径、颜色等属性。编写构造方法和其他方法,计算周长和面积。请编写程序验证Circle(圆)类的功能。

3.封装一个学生类,有姓名,有年龄,有性别,有英语成绩,数学成绩,语文成绩;求总分,平均分,以及打印输出学生的相关信息。

4.设计一个Person类,属性有姓名、年龄、性别,创建方法personInfo,打印输出这个人的信息;创建Student类,继承Person类,属性有学院college,班级Group,重写父类PersonInfo方法,调用父类方法打印输出个人信息,将学生的学院、班级信息也打印输出出来。

5.定义一个交通工具(Vehicle)的类,属性:速度(speed)、体积(size)等等。方法:移动move()、设置速度setSpeed(int speed)、加速speedUp()、减速speedDown()等等。实例化一个交通工具对象,通过方法初始化speed、size的值并且在相关方法中可以打印输出出来;另外调用加速减速的方法对速度进行改变。

四、实验结果

(在此部分列出保持缩进格式的程序代码及运行结果截图,请注意保持格式统一,截图清晰,大小合适)

1.有下面的类属性:姓名、年龄、成绩列表[语文,数学,英语],其中每门课成绩的类型为整数,类的方法如下所述:

  • (1)列表项列表项获取学生的姓名。get_name(),返回类型:str。
  • (2)获取学生的年龄。get_age(),返回类型:int。
  • (3)返回3门科目中最高的分数。get_course(), 返回类型:int。
  • 类定义好之后,可以定义同学测试如下: zm = Student('zhangming',20,[69,88,100]);返回结果: zhangming 20 100

代码:

class Student:
    def __init__(self,name,age,grade):
        self.name = name
        self.age = age
        self.grade = grade

    def get_name(self):
        return self.name
        
    def get_age(self):
        return self.age

    def get_course(self):
        return max(self.grade)

zm = Student('zhangming',20,[69,88,100])
print(zm.get_name(),zm.get_age(),zm.get_course())
copy

实验截图:

图片描述

2.设计一个Circle(圆)类,包括圆心位置、半径、颜色等属性。编写构造方法和其他方法,计算周长和面积。请编写程序验证Circle(圆)类的功能。

class Cricle:
    def __init__(self,centre,r,colour):
        self.centre = centre
        self.r  = r
        self.colour = colour

    def getGirth(self):
        return 2 * self.r * 3.14159
    def getArea(self):
        return  3.14159 * self.r * self.r
    def getColour(self):
        return self.colour
a = Cricle([2,4],3,'red')
print(a.getGirth(),a.getArea(),a.getColour())
copy

实验截图:

图片描述

3.封装一个学生类,有姓名,有年龄,有性别,有英语成绩,数学成绩,语文成绩;求总分,平均分,以及打印输出学生的相关信息。

class Student:
    def __init__(self,name,age,sex,english,math,chinese):
        self.__name = name
        self.__age = age
        self.__sex = sex
        self.__english = english
        self.__math = math
        self.__chinese = chinese

    def getTotal(self):
        return self.__english + self.__math + self.__chinese
    
    def getEqual(self):
        return (self.__english + self.__math + self.__chinese) / 3

    def getPrint(self):
        print(self.__name,self.__age,self.__sex,self.__english)
        print(self.__math,self.__chinese)

zhang  =  Student('Zhangjie',20,'man',110,120,110)
print(zhang.getTotal(),zhang.getEqual())
zhang.getPrint()
copy

运行截图:

图片描述

4.设计一个Person类,属性有姓名、年龄、性别,创建方法personInfo,打印输出这个人的信息;创建Student类,继承Person类,属性有学院college,班级Group,重写父类PersonInfo方法,调用父类方法打印输出个人信息,将学生的学院、班级信息也打印输出出来。

class Student:
    def __init__(self,name,age,sex,english,math,chinese):
        self.name = name
        self.age = age
        self.sex = sex
        self.english = english
        self.math = math
        self.chinese = chinese

    def getTotal(self):
        return self.english + self.math + self.chinese
    
    def getEqual(self):
        return (self.english + self.math + self.chinese) / 3

    def getPrint(self):
        print(self.name,self.age,self.sex,self.english)
        print(self.math,self.chinese)

zhang  =  Student('Zhangjie',20,'man',110,120,110)
print(zhang.getTotal(),zhang.getEqual())
zhang.getPrint()
copy

运行截图:

图片描述

5.定义一个交通工具(Vehicle)的类,属性:速度(speed)、体积(size)等等。方法:移动move()、设置速度setSpeed(int speed)、加速speedUp()、减速speedDown()等等。实例化一个交通工具对象,通过方法初始化speed、size的值并且在相关方法中可以打印输出出来;另外调用加速减速的方法对速度进行改变。

代码:

class Vehicle:
    def __init__(self,size,weight,speed = 10,distence = 0):
        self.size = size
        self.weight = weight
        self.__speed = speed
        self.distence =  distence

    def move(self):
        self.distence += self.__speed
        print('移动了',self.distence)
        
    def setSpeed(self,speed):
        self.__speed = speed

    def speedDown(self,down):
        self.__speed -= down

    def show(self):
        print(self.__speed,self.size,self.weight,self.distence)

cheng = Vehicle(10.8,10000,10,0)
cheng.move()
cheng.setSpeed(30)
cheng.speedDown(20)
cheng.show()
cheng.move()
copy

运行截图:

图片描述

五、实验小结

(包括问题和解决办法、心得体会、意见与建议等)、

问题: 1.对类的方法定义模糊,差点理解错误题目

2.继承自基类的数据如何输出

3.老是忘记self

解决办法: 1.在网上搜寻的相关视频,方法的定义

2.查找课本发现用super

心得体会: python 的类和c++有很大不同,但却是python的类更为方便易用,要牢记self

意见与建议: 建议提交实验报告的平台换为与课堂,在本地写实验报告,更稳定,老是写一半实验报告莫名其妙没了

最新评论

解题逻辑合理,运行截图未显示。

2023-06-26 21:34:37
回复