第九次上机作业

 1.设计圆circle和球sphere类,计算圆的周长和面积,球的表面积和体积,并编写测试代码。 

class Circle:

    def __init__(self,r=0):

        self.r=r

    def circumference(self):

        return 2*3.14*self.r

    def area(self):

        return 3.14*self.r*self.r

class Sphere(Circle):

    def __init__(self,R):

        Circle.__init__(self,R)

    def square(self):

        return 4*3.14*self.r*self.r

    def volume(self):

        return 4*3.14*self.r*self.r*self.r/3

c=Circle(2)

s=Sphere(2)

print('圆的周长为{},面积为{}'.format(c.circumference(),c.area()))

print('球的表面积为{},体积为{}'.format(s.square(),s.volume()))

2.编写一个公司的工资管理程序。该公司主要有3类人员:经理、销售员、销售经理。要求输入并显示每类人员的编号(从10000号起编号)、姓名和月薪。其中月薪计算方法为:经理固定月薪8000元,销售员为当月销售额的4%,销售经理保底工资5000元另加其所管部门销售额的5%)。

class Person:

    def __init__(self,id,name,salary):

        self.id=id

        self.name=name

        self.salary=salary

    def getSalary(self):

        return self.salary

class Manager(Person):

    def getSalary(self):

        return 8000

class Salesperson(Person):

    def __init__(self,id,name,salary,sales):

        super().__init__(id,name,salary)

        self.sales=sales

    def getSalary(self):

        self.salary=self.sales*0.04

        return self.salary

class Salesmanager(Person):

    def __init__(self,id,name,salary,sales,dsales):

        super().__init__(id, name,salary)

        self.sales = sales

        self.dsales=dsales

    def getSalary(self):

        self.salary=5000+self.dsales*0.05

        return self.salary

person=[Manager(10002,'张三',8000),Salesperson(10001,'李四',0,120000),Salesmanager(10004,'王五',0,6000,120000)]

for p in person:

    print('编号:{},姓名:{},月工资:{}'.format(p.id,p.name,p.getSalary()))

 3.设计向量(Vector)类,功能如下:

(1)定义带一个列表参数(向量的坐标,可以是任意维度)的构造函数

(2)重载方法__getitem__,返回第i个元素,即第i维坐标

(3)重载方法__add__、__sub__、__abs__,实现向量的运算:加法、减法、大小(模)

(4)定义方法scale()、dot(),实现向量的运算:标量积、点积

(5)重载方法__len__(),返回向量的维度

(6)重载方法__str__(),返回向量的字符串表示

import math

class Vector:

    def __init__(self,a=0,b=0):

        self.L=[]

        self.__a=a

        (self.L).append(self.__a)

        self.__b=b

        (self.L).append(self.__b)

    def __getitem__(self,i):

        return (self.L)[i]

    def __add__(self,v):

        a=self.__a+v.__a

        b=self.__b+v.__b

        return Vector(a,b)

    def __sub__(self,v):

        a=self.__a-v.__a

        b=self.__b-v.__b

        return Vector(a,b)

    def __abs__(self):

        s=pow(self.__a,2)+pow(self.__b,2)

        s1=math.sqrt(s)

        return s1

    def __dot__(self,v):

        a=self.__a*v.__a

        b=self.__b*v.__b

        s=a+b

        return s

    def __scale__(self, v):

        s=self.__a*v.__a+self.__b*v.__b

        return s

    def __len__(self):

        n=len(self.L)

        return n

    def __str__(self):

        return '({},{})'.format(self.__a,self.__b)

c=Vector(2,3)

v=Vector(4,5)

print('c+v={}'.format(c+v))

print('c-v={}'.format(c-v))

print('返回第1个元素:{}'.format(c.__getitem__(1)))

print('向量的模为{}'.format(c.__abs__()))

print('向量的标量积和点积分别为为{}、{}'.format(c.__scale__(v),c.__scale__(v)))

print('向量的维度是{}'.format(c.__len__()))

 

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值