【Python程序设计】实验6:面向对象程序设计

实验目的:

理解PYTHON语言是如何体现面向对象编程基本思想的;掌握类的声明以及对象的创建;掌握类的成员变量和成员方法的特性以及类的构造方法的用;理解Python中的继承规则和继承顺序。

实验内容:

  1. 定义一个Circle类,根据圆的半径求周长和面积。再由Circle类创建两个圆对象,其半径分别为5和10,要求输出各自的周长和面积。 输出效果如下
第一个圆的半径为5 周长为31.41592653589793 面积为78.53981633974483 第一个圆的半径为10 周长为62.83185307179586 面积为314.1592653589793
import math
class Circle:
    def __init__(self,radius):
        self.radius = radius
    def Perimeter(self):
        return 2 * math.pi *self.radius
    def Area(self):
        return math.pi * self.radius * self.radius
c1=Circle(5)
c2=Circle(10)
print("第一个圆的半径为{}".format(c1.radius),"周长为{}".format(c1.Perimeter()),"面积为{}".format(c1.Area()))
print("第一个圆的半径为{}".format(c2.radius),"周长为{}".format(c2.Perimeter()),"面积为{}".format(c2.Area()))
  1. 设计一个简单的购房商贷月供计算器类,按照以下公式计算总利息和每月还款金额: 总利息=贷款金额利率每月还款金额=(贷款金额+总利息)/贷款年限(月) 贷款年限不同利率也不同,这里规定只有如下表所示的3种年限、利率。 年限利率 3年(36个月)6.03% 5年(60个月)6.12% 20年(240个月)4.39% 例如:贷款金额3万元 月供为:(300000.0603+30000)/36=883.5833333333334 输出效果如下:
请输入贷款金额: 30000 请选择贷款年限(3或5或20):3 月供为:883.583333
class Calculator():
    def __init__(self,money,time):
        self.money = money
        if time == 3:
            self.time = 3
        elif time == 5:
            self.time = 5
        elif time == 20:
            self.time = 20
    def loan_total_money(self):
        return (self.money)*(self.loan_rate_money())
    def loan_rate_money(self):
        if self.time ==3:
            return 0.0603
        elif self.time == 5:
            return 0.06125000
        elif self.time == 20:
            return 0.0639
    def every_repayment_money(self):
        return (self.money + self.loan_total_money())/(self.time*12)
money = int(input("请输入贷款金额: "))
time = input("请选择贷款年限(3或5或20):")
month_money = Calculator(money,time)
print("月供为:%f"%(month_money.every_repayment_money()))
  1. 继承6.5节例6-4中的Person类生成Student类,编写新的 函数用来设置学生专业,然后生成该类对象并显示信息。 class Person(object):#基类必须继承于object,否则在派生类中将无法使用super()函数
Name: Maming Age: 19 Sex: man Name: ZhangSan Age: 21 Sex: man Major: Math
def __init__(self,name = ,age = 20,sex = man):
        self.setName(name)
        self.setAge(age)
        self.setSex(sex)

    def setName(self,name):
        if not isinstance(name,str):
            print(name must be string.)
            return
        self.__name = name

    def setAge(self,age):
        if not isinstance(age,int):
            print(sge must be integer.)
            return
        self.__age = age

    def setSex(self,sex):
        if sex != manand sex!=woman:
            print(sex must be "man"or"woman")
            return
        self.__sex = sex

    def show(self):
        print(Name:,self.__name)
        print(Age:,self.__age)
        print(Sex:,self.__sex)

class Student(Person):
    def __init__(self,name = ,age = 20,sex = man,major = Computer):
        super(Student,self).__init__(name,age,sex)
        self.setMajor(major)
    def setMajor(self,major):
        if not isinstance(major, str):
            print(major must be a string.)
            return
        self.__major = major
    def show(self):
        super(Student, self).show()
        print(Major:,self.__major)
if __name__ == __main__:
    zhangsan = Person(Maming,19,man)
    zhangsan.show()
    lisi = Student(ZhangSan, 21, man, Math)
    lisi.show()
经验分享 程序员 微信小程序 职场和发展