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

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

    def get_name(self):
        print(str(self.name))

    def get_age(self):
        print(int(self.age))

    def get_course(self):
        a = list(self.grade.values())
        print(max(a))


zm = Student('张敏', 20, {'语文': 69, '数学': 88, '英语': 100})
zm.get_name()
zm.get_age()
zm.get_course()

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

class Circle:
    def __init__(self,tup, radius, color):
        self.center = tup
        self.radius = radius
        self.color = color
    def perimeter(self):#周长
        return 3.14 * 2 * self.radius
    def area(self):#面积
        return 3.14 * self.radius * self.radius
circle = Circle((0,0),5,"黑色")
print(format(circle.perimeter(),'.2f'))
print(float(circle.area()))



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

class Student:    # 定义一个学生类名

    def __init__(self,student,name,age,gender,English_results,math_results,chinese_results):    # 初始化参数7个实例属性
        self.student = student         # 具体参数名
        self.name = name               # 具体参数名
        self.age = age                 # 具体参数名
        self.gender = gender           # 具体参数名
        self.English_results = English_results      # 具体参数名
        self.math_results = math_results            # 具体参数名
        self.chinese_results = chinese_results      # 具体参数名

    # 计算总分    -方法1
    def sum_score(self):      # 类方法使用函数
        return self.English_results + self.math_results + self.chinese_results     # 返回3科成绩的总值

    # 计算三科平均分    -方法2
    def average_score(self):     # 类方法使用函数
        return (self.English_results + self.math_results + self.chinese_results) / 3       # 返回3科成绩的平均分

    # 打印学生的个人信息:我的名字叫XXX,年龄:xxx, 性别:xxx   -方法3
    def personal_info(self):          # 类方法使用函数
        print('我的身份是:{},我的名字叫:{},年龄:{},性别是:{},英语成绩是:{},数学成绩是:{},语文成绩是:{},总成绩是:{},平均成绩是:{:.2f}'.
              format(self.student,self.name,self.age,self.gender,self.English_results,self.math_results,
                     self.chinese_results,member.sum_score(),member.average_score()))         # 打印个人信息,使用函数

# 进行实例化,调用__init__ 有7个参数,在实例化的时候就给7个参数
member = Student('学生','小麦',20,'男',97,57,60)    # member就是Studer类的一个对象   self 就是member
member.personal_info()    # 调用对象(member)来访问类属性(personal_info)

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


class Vehicle(object):
    trans_type = 'SUV'

    def __init__(self,speed,*args):
        self.speed = speed
        self.size = args

    def show_info(self):
        print('所属类型:{},速度是:{}KM/h,体积是:{}'.format(self.trans_type,self.speed,self.size))


    def move(self):
        print('我已向前移动了60米')

    def set_speed(self):
        self.new_speed = '180km/h'

    def get_speed(self):
        print('我的时速为:{},设置的速度为:{}'.format(self.speed,self.new_speed))

    def seep_up(self):
        self.__new_speed = self.speed +10
        print('我的速度由{}kw/h,提升到了{}kw/h'.format(self.speed,self.__new_speed))

    def speed_down(self):
        self.__speed = self.speed - 15
        print('我的速度由{}km/h,下降到了{}km/h'.format(self.speed,self.__speed))

    def transport_identify(self):
        if type(Vehicle) == 'Vehicle':
            print('类型匹配')
        else:
            print('类型不匹配')

car1 = Vehicle(110,4.45,1.12,2.75)
car1.show_info()
car1.move()
car1.set_speed()
car1.get_speed()
car1.seep_up()
car1.speed_down()
car1.transport_identify()

问题和解决办法:在做封装时遇到了为什么要封装这个问题,通过同学们一起讨论知道了,封装数据是为了保护隐私,封装方法:隔离复杂度,解决了封装的理解不够深入的问题。

心得体会:通过这次实验对以前学习有了更深层的理解,以前学C++时学习不够仔细好多的知识多没有学好,因此在学习python的面向对象的课程有一定的认识,学习类的应用和方法,对类的实参传递等一些列的知识有一定的认识,深深的体会到了,如果一种语言不支持继承,类就没有什么意义,在这次实验题学会了不少的知识。

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

麦与陌生人

打赏每人一元起步·小气鬼

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值