1. 定义⼀个点类 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,radius,cp):
self.radius = radius
self.cp = cp
def area(self):
return f'面积:{3.14 * self.radius ** 2:.2f}'
def circumference(self):
return f'周长{2 * 3.14 * self.radius:.2f}'
# 传另外一个点
def relationship(self,p1):
# 点到圆心的距离
l = math.sqrt(((self.cp.x-p1.x)**2 + (self.cp.y-p1.y)**2))
if l == self.radius :
print('点在圆上')
elif l > self.radius:
print('点在圆外')
else:
print('点在圆内')
if __name__ == '__main__':
# 圆心
cp = Pointer(0,0)
# 另外一个点
p1= Pointer(4,5)
# 创建一个圆的对象
c1 = Circle(5,cp)
print(c1.area())
print(c1.circumference())
c1.relationship(p1)
2. 宠物店类 PetShop
属性:店名,店中的宠物 【使⽤列表存储宠物】
⽅法:展示所有宠物的信息宠物狗类 PetDog
属性:昵称,性别,年龄,品种
⽅法:叫,拆家,吃饭宠物猫类 PetCat
属性:昵称,性别,年龄,品种,眼睛的颜⾊
⽅法:叫,撒娇,吃饭
注意:狗的叫声是汪汪 猫的叫声是喵喵狗吃的是⻣头 猫吃的是⻥
class PetShop():
def __init__(self, shop_name,pet_list=None):
# 判断是否是空,如果空就放一个空列表,否则加到pet_list中
if pet_list == None:
pet_list = []
self.shop_name = shop_name
self.pet_list = pet_list
def show(self):
'''展示宠物店信息'''
if len(self.pet_list) == 0:
print("还没有宠物!")
return
print("店名:{},有{}种宠物".format(self.shop_name,len(self.pet_list)))
for pet in self.pet_list:
print(pet.__dict__)
class Pet():
def __init__(self,name,sex,age,breed):
self.name = name
self.sex = sex
self.age = age
self.breed = breed
def cry(self):
pass
def eat(self):
pass
class PetDog(Pet):
# 子类重写父类的cry :若不重写则会默认用父类的方法
def cry(self):
print(self.name,'汪汪')
# 子类添加自有的方法play_home
def play_home(self):
print(self.name,'疯狂拆家')
# 子类重写父类的eat
def eat(self):
print(self.name,'狗吃骨头')
def __str__(self):
return 'PetDog的名字:{},性别:{},年龄:{},品种:{}'.format(self.name,self.sex,self.age,self.breed)
class PetCat(Pet):
def __init__(self,name,sex,age,breed,eye_color):
# 添加属于自己的属性
super(PetCat, self).__init__(name,sex,age,breed)
self.eye_color=eye_color
# 子类重写父类的cry
def cry(self):
print(self.name,'喵喵')
# 子类重写父类的eat
def eat(self):
print(self.name,'吃鱼')
# 子类添加自有的方法coquetry
def coquetry(self):
print(self.name,'开始撒娇')
def __str__(self):
return 'PetCat的名字:{},性别:{},年龄:{},品种:{},眼睛:{}'.format(self.name,self.sex,self.age,self.breed,self.eye_color)
if __name__ == '__main__':
dog=PetDog("小黄","公",2,"柴犬")
dog1=PetDog("大朗","公",3,"金毛")
dog2=PetDog("熊大","公",4,"柴犬")
cat=PetCat("小美","母",2,"美短","黑色")
cat1=PetCat("小花","母",3,"狸花猫","蓝色")
cat2=PetCat("三七","母",4,"英短","灰白色")
d=PetShop("晓萌宝贝",[dog,dog1,dog2])
c=PetShop("晓萌宝贝",[cat,cat1,cat2])
d.show()
c.show()
dog.eat()
dog.cry()
cat1.eat()
cat2.cry()
print(dog)
print(cat2)
运行结果如下:
3. 学⽣类Student:
属性:学号,姓名,年龄,性别,成绩班级类 Grade:
属性:班级名称,班级中的学⽣ 【使⽤列表存储学⽣】
⽅法:
1. 查看该班级中的所有学⽣的信息
2. 查看指定学号的学⽣信息
3. 查看班级中成绩不及格的学⽣信息
4. 将班级中的学⽣按照成绩降序排序
class Student():
def __init__(self,number,name,age,sex,score):
self.number = number
self.name = name
self.age = age
self.sex = sex
self.score = score
def __str__(self):
return'【学号:{},姓名:{},年龄:{},性别:{},分数:{}】'.format(
self.number,self.name,self.age,self.sex,self.score
)
class Grade():
# 加入班级名和信息列表
def __init__(self,class_name,stu_list=None):
self.class_name=class_name
if stu_list == None:
self.stu_list = []
return
self.stu_list = stu_list
# 展示信息
def show(self):
for stu in self.stu_list:
print(stu)
# 查找指定学号的学生信息
def show_number(self,nums):
for stu in self.stu_list:
if stu.number == nums:
print(f'学号{nums}的学生是:{stu}')
break
else:
print('学生信息不存在!')
# 成绩不及格的学生信息
def fall(self):
flag = False
for stu in self.stu_list:
if stu.score < 60:
flag = True
print(f'{self.class_name}班,不及格学生信息是:{stu}')
if not flag:
print(f'{self.class_name}班没有不及格学生')
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)
# sort+匿名函数排序法
self.stu_list.sort(key = lambda stu:stu.score,reverse=True)
for x in self.stu_list:
print(x)
if __name__ == '__main__':
number = ["1001","1002","1003","1004","1005"]
name = ['李白','韩信','安其拉','王昭君','李信']
age = [16,17,15,20,19]
sex = ['男','男','女','男','女']
scrore = [77,69,53,89,91]
# 用一个容器装这些信息
stus =[]
for i in range(len(number)):
# 循环初始化加入列表中的信息
stu = Student(number[i],name[i],age[i],sex[i],scrore[i])
stus.append(stu)
grade=Grade('无敌小王子',stus)
grade.show()
grade.show_number("1003")
grade.fall()
grade.sort()
运行结果如下: