python学习实验报告(第五周)

一、实验目的

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
class Student:
    def __init__(self, name, age, sc_list):
        self.name = name
        self.age = age
        self.sc_list = sc_list

    def get_name(self):
        return self.name

    def get_age(self):
        return self.age

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

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

图片描述

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

import math
class Circle:
    def __init__(self, center, radius, color):
        self.center = center
        self.radius = radius
        self.color = color

    def compute_perimeter(self):
        return round(2 * math.pi * self.radius, 2)

    def compute_area(self):
        return round(math.pi * self.radius**2, 2)

circle = Circle((1, -1), 2, "blue")
print("圆的属性有:圆心位置为{},半径为{},颜色为{}".format(circle.center, circle.radius, circle.color))
print("此圆的周长为{},面积{}".format(circle.compute_perimeter(), circle.compute_area()))

图片描述

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

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

    def compute_total(self):
        total = 0
        for i in range(len(self.sc_list)):
            total += self.sc_list[i]
        return total

    def compute_average(self):
        return round(self.compute_total()/len(self.sc_list), 2)

s1 = Student('lisi', 20, 'male', [77, 88, 99])
print("姓名:{},年龄:{},性别:{},成绩:英语{} 数学{} 语文{}"
      .format(s1.name, s1.age, s1.sex, s1.sc_list[0], s1.sc_list[1], s1.sc_list[2]))
print("该学生的总分为{},平均分为{}".format(s1.compute_total(), s1.compute_average()))

图片描述

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

class Person:
    def __init__(self, name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex

    def personinfo(self):
        print("姓名:{},年龄:{},性别:{}".format(self.name, self.age, self.sex))

class Student(Person):
    def __init__(self, name, age, sex, Group, college):
        super().__init__(name, age, sex)
        self.Group = Group
        self.college = college

    def personinfo(self):
        print("姓名:{} 年龄:{} 性别:{} 班级:{} 学院:{}".format(self.name, self.age, self.sex, self.Group, self.college))

s1 = Person('liuer', 20, 'male')
s1.personinfo()
s2 = Student('liuer', 20, 'male', '21-1', 'software college')
s2.personinfo()

图片描述

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

class Vehicle:
    def __init__(self, speed, size):
        self.speed = speed
        self.size = size

    def printinfo(self):
        print("此交通工具的速度为{}km/h,体积为{}m^3".format(self.speed, self.size))

    def setSpeed(self, sp):
        self.speed = sp
        print("Vehicle speed {}km/h".format(self.speed))

    def move(self):
        print("Igniting...")
        self.setSpeed(10)
        print("Set vehicle speed 10. Move forward.")

    def stop(self):
        self.setSpeed(0)
        print("Vehicle stop!")

    def speedUp(self, num):
        if self.speed + num >= 120:
            self.setSpeed(120)
            print("Speed reaches upper limit!")
        else:
            self.setSpeed(self.speed+num)

    def speedDown(self, num):
        if self.speed - num < 0:
            self.stop()
        else:
            self.setSpeed(self.speed-num)

car = Vehicle(0, 8)
car.printinfo()
car.move()
car.setSpeed(50)
car.speedUp(20)
car.speedUp(60)
car.speedDown(20)
car.stop()

python学习实验报告(第五周)_第1张图片

三、实验小结

本周题型针对的是类的使用,对于python的面向对象编程我还是有较大的不足。我目前只能运用最基本的构造和继承类的方法,而对于更深层次——灵活使用类方法和静态方法、析构函数等,还是有所欠缺,一般在解题的时候也都不会往那些方面去想。

你可能感兴趣的:(Python学习实验报告,python)