day14作业

必做题

1.定义一个汽车类Vehicle,

​ 要求: 1.属性包括:汽车品牌brand、颜色color和速度speed, 其中速度的起始值是0。

​ 2.为属性提供访问的方法。**注意:**汽车品牌一旦初始化之后不能修改。

​ 3.方法有加速、减速。

class Vehicle(object):
    def __init__(self,brand,color):
        self.__brand=brand
        self.color=color
        self.speed=0
    def speed_up(self,speed):
        self.speed+=speed
        print("加速之后的车速为%s" %(self.speed))
    def speed_down(self,speed):
        if speed>self.speed:
            #print("抱歉,无法完成减速")
            self.speed=0
        else:
            self.speed -= speed
        print("减速")
    @property
    def brand(self):
        return self.__brand
    @brand.setter
    def brand(self,brand):
        self.__brand=brand

w=Vehicle("宝马","白色")
w.speed_up(12)
w.speed_down(23)
w.color="黑色"
print(w.color)
w.brand="宾利"
print(w.brand)

2.定义一个点类 Pointer 属性是横向坐标 x与 纵向坐标 y

定义一个圆类 Circle
属性有圆心点 cp 与 半径 radius

​ 方法有:

​ 1.求圆的面积

​ 2.求圆的周⻓

​ 3.求指定点与圆的关系

提示:关系有三种 【圆内 圆外 圆上】 设计到的数学公式:指定点与圆心点之间的距离 与 圆的半径进行比较

import math
class Pointer():
    def __init__(self,x,y):
        self.x=x
        self.y=y

class Circle():
    def __init__(self,cp,radius):
        self.cp=cp
        self.radius=radius
    def area(self):
        return 3.14*self.radius**2
    def perimeter(self):
        return 2*3.14*self.radius
    def relation(self,cp,po):
        l=math.sqrt((po.x-cp.x)**2+(po.y-cp.y)**2)
        if l>self.radius:
            print("圆外")
        elif l==self.radius:
            print("圆上")
        elif l<self.radius:
            print("圆内")

po=Pointer(2,2)
cp=Pointer(0,0)
a=Circle(cp,1)
print(a.area())
print(a.perimeter())
a.relation(cp,po)

3.宠物店类 PetShop
属性:店名,店中的宠物 【使用列表存储宠物】

​ 方法:展示所有宠物的信息

宠物狗类 PetDog

​ 属性:昵称,性别,年龄,品种

​ 方法:叫,拆家,吃饭

宠物猫类 PetCat

​ 属性:昵称,性别,年龄,品种,眼睛的颜色

​ 方法:叫,撒娇,吃饭

注意:狗的叫声是汪汪 猫的叫声是喵喵 狗吃的是⻣头 猫吃的是⻥

class PetShop():
    def __init__(self,name,pet_list):
        self.name=name
        self.pet_list=pet_list
    def show(self):
        if len(self.pet_list) == 0:
            print("刚开张,还没有宠物呢!")
            return
        print("{}".format(self.name))
        for pet in self.pet_list:
            print(pet.__dict__)

class Pet(object):

    def __init__(self,name,gender,age,kind):
        self.name=name
        self.gender=gender
        self.age=age
        self.kind=kind
    def cry(self):
        pass
    def eat(self):
        pass
    def myprint(self):
        print(self.name,self.gender,self.age,self.kind)

class PetDog(Pet):
    def des_home(self):
        print(self.name + "拆家")
    def cry(self):
        print("汪汪")
    def eat(self):
        print(self.name +"eating")

class PetCat(Pet):
    def __init__(self,name,gender,age,kind,eye_color):
        self.eye_color=eye_color
        super().__init__(name,gender,age,kind)
    def cry(self):
        print(self.name+"喵喵叫")
    def play(self):
        print(self.name + "撒娇")
    def eat(self):
        print(self.name + "吃⻥")


dog=PetDog("小黄","公",2,"柴犬")
dog1=PetDog("小黄1","公",3,"柴犬")
dog2=PetDog("小黄2","公",4,"柴犬")
cat=PetCat("小美","母",2,"美短","黑色")
cat1=PetCat("小美1","母",3,"美短","黑色")
cat2=PetCat("小美2","母",4,"美短","黑色")
ps=PetShop("shop",[dog,dog1,dog2])
ps.show()
dog.eat()
dog.cry()
cat.eat()
cat.cry()

4.利用继承完成下面代码的实现

销售类:

​ 属性:姓名 年龄 性别 薪资 奖金

​ 行为:合计自己的工资

行政类:

​ 属性:姓名 年龄 性别 薪资

​ 行为:合计自己的工资

财务类:

​ 属性:姓名 年龄 性别 薪资

​ 行为:合计自己的工资

分别创建 销售人员对象 行政人员对象 财务人员对象 分别输出他们的工资

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

class Sell(Person):
    def __init__(self,name,age,gender,salary,bouns):
        self.bouns=bouns
        Person.__init__(self,name,age,gender,salary)
    def money(self):
        return self.salary+self.bouns
class Administrative(Person):
    def money(self):
        return self.salary
class Finance(Person):
    def money(self):
        return self.salary

s=Sell("小王",24,"男",5000,1000)
a=Administrative("小美",24,"女",3000)
f=Finance("小李",24,"女",6000)
print(s.money())
print(a.money())
print(f.money())

5.继承完成

为一个州立大学建立账单系统,州内和州外学生的收费标准不同,州内每学分收费$75,州外每学分$200。每个学生账单上都显示学校的名字,学生自己的名字,学分和账单总额。

州内学生类:

​ 属性:学校名 姓名 学分

​ 方法: 计算学费 打印账单

州外学生类:

​ 属性:学校名 姓名 学分

​ 方法:计算学费 打印账单

分别创建一个州内学生对象 和 州外学生对象 分别打印他们的学费账单

class Person():
    def __init__(self,school,name,grade):
        self.school=school
        self.name=name
        self.grade=grade
class State_in(Person):
    def cost(self):
        return self.grade*75
    def bill(self):
        print("学校:%s,学生姓名:%s,学分:%s,账单总额:%s" %
              (self.school,self.name,self.grade,self.cost()))
class State_out(Person):
    def cost(self):
        return self.grade*200
    def bill(self):
        print("学校:%s,学生姓名:%s,学分:%s,账单总额:%s" %
                (self.school, self.name, self.grade, self.cost()))
wm=State_in("千峰","王猛",10)
xm=State_out("新东方","小美",10)
print(wm.cost())
wm.bill()
print(xm.cost())
xm.bill()

6.写出你今日对课程有疑问的地方(或者觉得有困难的知识点)


选做题

1.学生类Student:

​ 属性:学号,姓名,年龄,性别,成绩

班级类 Grade:
属性:班级名称,班级中的学生 【使用列表存储学生】

​ 方法:

​ 1.查看该班级中的所有学生的信息

​ 2.查看指定学号的学生信息

​ 3.查看班级中成绩不及格的学生信息

​ 4.将班级中的学生按照成绩降序排序

class Grade():
    def __init__(self,class_name,list=None):
        self.class_name=class_name
        if list is None:
            list=[]
        self.list=list
    def add_list(self,stu):
        self.list.append(stu.stu_list)
    def show(self):
        print(self.list)
    def show_num(self,num):
        for i in self.list:
            if num in i[0]:
                print(i)
                break
        else:
            print("该学号的学生不存在。")
    def fail(self):
        for i in self.list:
            if i[4]<60:
                print(i)
    def sort(self):
        for i in range(len(self.list)-1):
            for j in range(len(self.list)-1-i):
                if self.list[j][4]<self.list[j+1][4]:
                    self.list[j],self.list[j+1]=self.list[j+1],self.list[j]
        print(self.list)



class Student():
    def __init__(self,num,name,age,gender,score,stu_list=None):
        self.num=num
        self.name=name
        self.age=age
        self.gender=gender
        self.score=score
        self.stu_list=[self.num,self.name,self.age,self.gender,self.score]

grade=Grade("逆战班")
wm=Student("001","王猛",24,"男",100)
grade.add_list(wm)
xm=Student("002","小美",24,"女",99)
grade.add_list(xm)
zs=Student("003","张三",24,"男",88)
grade.add_list(zs)
ls=Student("004","李四",24,"男",40)
grade.add_list(ls)
#1.查看该班级中的所有学生的信息 
grade.show()
#2.查看指定学号的学生信息 
grade.show_num("001")
#3.查看班级中成绩不及格的学生信息 
grade.fail()
#4.将班级中的学生按照成绩降序排序
grade.sort()

你可能感兴趣的:(python)