6-1 设计Shape基类及Circle, Rectangle继承类
设计一个基类Shape,包括:
- 名为sName的属性(图形名称);
- 构造函数应对sName属性进行初始化。
设计Shape的继承类Rectangle, 包括:
- 长,宽两个属性;
- 构造函数调用Shape的构造函数,并初始化长,宽两个属性;
- getArea()成员函数计算并返回矩形面积。
设计Shape的继承类Circle,包括:
- 半径属性;
- 构造函数调用Shape的构造函数,并初始化半径属性;
- getArea()成员函数计算并返回圆形面积。
注意:请注意阅读测试样例程序以理解题目对类的接口的要求。
类接口定义:
class Shape:
...
class Rectangle(Shape):
...
class Circle(Shape):
...
裁判测试程序样例:
s1 = Shape("shape0")
s = input() #矩形名称
w = float(input()) #矩形宽度
h = float(input()) #矩形高度
r1 = Rectangle(s,w,h)
s = input() #圆的名称
r = float(input()) #圆的半径
c1 = Circle(s,r)
print(s1.sName)
print("矩形%s面积: %.2f" % (r1.sName,r1.getArea()))
print("圆形%s面积: %.2f" % (c1.sName,c1.getArea()))
输入样例:
Jupyter
12.1
9.9
Moon
3.3
输出样例:
shape0
矩形Jupyter面积: 119.79
圆形Moon面积: 34.21
代码:答案
class Shape:
def __init__(self,sName):
self.sName = sName
class Rectangle(Shape): #父类
def __init__(self,name,long,wide): #构造方法,__init__特殊成员
self.sName = Shape.sName = name
self.long = long #初始化
self.wide = wide
def getArea(self): #实例方法,直接self,无需传入参
sum = self.long * self.wide
return sum
class Circle(Shape):
def __init__(self,name,radii):
self.sName = Shape.sName = name
self.radii = radii
def getArea(self):
sum = 3.141 * self.radii **2 #**2,平方
return sum
6-2 定义并实现身体质量指数类
按图施工,设计下述BMI类,用于计算身体质量指数。该指数等于体重(kg)除以身高(米)的平方。
相应的判定标准如下图所示。
BMI类接口定义:
class BMI:
...
其中,name为姓名,age为年龄,height为身高,单位为米,weight为体重,单位为kg。
getBMI()函数返应计算所得的身体质量指数;
getStatus()返回评价结果,其值应为超轻/标准/超重/肥胖之一。
裁判测试程序样例:
sName = input() #输入姓名
iAge = int(input()) #输入年龄
fHeight = eval(input()) #输入身高,预期为浮点数,单位米
fWeight = eval(input()) #输入体重,预期为浮点数,单位千克
bmi=BMI(sName,iAge,fHeight,fWeight) #实例化BMI类
print("Name:",bmi.name)
print("Age:",bmi.age)
print("BMI = %.3f" % bmi.getBMI())
print("Result =",bmi.getStatus())
输入样例:
Alex
27
1.75
68
输出样例:
Name: Alex
Age: 27
BMI = 22.204
Result = 标准
代码:答案
class BMI:
def __init__(self,name,age,height,weight):
self.name = name
self.age = age
self.height = height
self.weight = weight
def getBMI(self): #指数计算
self.sum = self.weight / self.height**2
return self.sum
def getStatus(self): #判定身体质量指数
if self.sum < 18: #有python3.10的可以用match...case
return '超轻'
elif self.sum < 25:
return '标准'
elif self.sum < 27:
return '超重'
else:
return '肥胖'
6-3 定义并实现Book类及其__del__函数
图书馆里有很多的书, 请定义一个名为Book的类。该类的属性包括书名(字符串),书号(字符串),单价(浮点数);该类的构造函数接受书名,书号及单价三个参数并参成对象初始化;该类的__del__()函数则向终端打印如下信息:
Book destroyed-书名,书号,单价
注意:单价保留两位小数。
类接口定义:
class Book:
...
裁判测试程序样例:
sName = input() #输入书名
sNo = input() #输入书号
fPrice = float(input()) #输入单价
b = Book(sName,sNo,fPrice)
b = None #触发b对象的__del__方法的执行
输入样例:
Python编程基础及应用
888-999
43.678
输出样例:
Book destroyed-Python编程基础及应用,888-999,43.68
代码:答案
class Book:
def __init__(self,name,No,price):
self.name = name
self.No = No
self.price = price
def __del__(self) -> None:
print('Book destroyed-{},{},{:.2f}'.format(self.name,self.No,self.price))
6-4 设计一个股票类
设计一个名为Stock的类来表示一个公司的股票,包括以下内容:
1)股票代码、股票名称、前一天股票价格、当天股票价格4个私有属性;
2)构造方法,需初始化代码、名称、前一天价格和当天价格等属性;
3)返回股票名字的get方法;
4)返回股票代码的get方法;
5)获取和设置股票前一天价格的get和set方法;
6)获取和设置股票当前价格的get和set方法;
7)名为getChangePercent()方法,返回前日收市价至当前价格的变化百分比;
8). 包括文档字符串,其内容为:"Stock Information Class"
说明:各方法的名称及参数要求请参见测试程序。
类接口定义:
class Stock:
...
裁判测试程序样例:
sCode = input() #输入代码
sName = input() #输入名称
priceYesterday = float(input()) #输入昨日价格
priceToday = float(input()) #输入今日价格
s = Stock(sCode,sName,priceYesterday,priceToday)
print("代码:",s.getCode())
print("名称:",s.getName())
print("昨日价格:%.2f\n今天价格:%.2f" % (s.getPriceYesterday(),s.getPriceToday()))
s.setPriceYesterday(50.25)
print("修正昨日价格为:%.2f" % 50.25)
print("价格变化百分比:%.2f%%" % (s.getChangePercent()*100))
print(Stock.__doc__)
输入样例:
601318
中国平安
63.21
64.39
输出样例:
代码: 601318
名称: 中国平安
昨日价格:63.21
今天价格:64.39
修正昨日价格为:50.25
价格变化百分比:28.14%
Stock Information Class
代码:答案
class Stock:
def __init__(self,code,name,yesd_price,tod_price):
self.__code = code #__私有
self.__name = name
self.__yesd_price = yesd_price
self.__tod_price = tod_price
def getCode(self): #代码
return self.__code
def getName(self): #名字
return self.__name
def getPriceYesterday(self): #前一天
return self.__yesd_price
def setPriceYesterday(self,new_price): #更新
self.__yesd_price = new_price
def getPriceToday(self): #今天
return self.__tod_price
def setPriceToday(self,new_price): #更新
self.__tod_price = new_price
def getChangePercent(self):
return (self.__tod_price - self.__yesd_price) / self.__yesd_price
__doc__ = 'Stock Information Class'
有更优解,可以在下方评论!欢迎各位大佬指导!谢谢
共同成长!高处相见