来自CAU李光军《Python语言程序设计》的课后练习
作为一个科班生,上这门公选课实在是有点说不过去hh
但由于我只是一个python究极小白,所以也没有什么不对劲orz
(欢迎各位大佬对代码批评指正)
更新此贴:仅作为复习总结使用,同校的朋友可以参考(不过不建议照搬啊hh)
PS:本周的作业老师给题目的时候直接给了答案...??,那么我就不客气了~
【任务练习】设计一个立方体类Box,定义三个属性,分别是长,宽,高。定义二个方法,分别计算并输出立方体的体积和表面积。
【任务验证一】:创建一个包含实例属性的汽车类
汽车通常包括车型( rank)、颜色(color)、品牌(brand)、行驶里程(mileage)等属性,还可以包括设置和获取行驶里程的方法。
本任务要求:编写一个汽车类,该类包括上述属性(要求为实例属性)和方法,然后实现以下功能:
(1)创建两个汽车类的实例,分别输出它们的属性。
(2)调用汽车类的方法设置行驶里程,再读取最终的行驶里程输出。
class Car():
'''汽车类'''
def __init__(self,rank = '小型车',color = 'white',brand = '比亚迪'):
self.rank = rank # 车型
self.color = color # 颜色
self.brand = brand # 品牌
self.mileage = 10 # 行驶里程(单位:千米)
def get_mileage(self):
print('行驶里程为',self.mileage,'千米。')
def set_mileage(self,value):
self.mileage += value
if __name__ == '__main__':
print('='*5,'第一个实例','='*5)
car = Car()
print('车型:',car.rank) # 输出属性
print('颜色:',car.color) # 输出属性
print('品牌:',car.brand) # 输出属性
# 调用方法
car.get_mileage() # 输出原行驶里程
car.set_mileage(5.6) # 行驶里程增加5.6千米
print('更改行驶里程……')
car.get_mileage() # 输出新行驶里程
print('='*5,'第二个实例','='*5)
car = Car('SUV','黑色','丰田')
print('车型:',car.rank) # 输出属性
print('颜色:',car.color) # 输出属性
print('品牌:',car.brand) # 输出属性
# 调用方法
car.get_mileage() # 输出原行驶里程
car.set_mileage(10) # 行驶里程增加10千米
print('更改行驶里程……')
car.get_mileage() # 输出新行驶里程
运行结果:
===== 第一个实例 =====
车型: 小型车
颜色: white
品牌: 比亚迪
行驶里程为 10 千米。
更改行驶里程……
行驶里程为 15.6 千米。
===== 第二个实例 =====
车型: SUV
颜色: 黑色
品牌: 丰田
行驶里程为 10 千米。
更改行驶里程……
行驶里程为 20 千米。
【任务验证二】:创建一个包含类属性的汽车类
修改“任务一”完成的实例,将其中的实例属性修改为类属性。
实现效果:
class Car():
'''汽车类'''
rank = '小型车' # 车型
color = 'white' # 颜色
brand = '比亚迪' # 品牌
mileage = 10 # 行驶里程(单位:千米)
def __init__(self,rank = '小型车',color = 'white',brand = '比亚迪'):
Car.rank = rank # 车型
Car.color = color # 颜色
Car.brand = brand # 品牌
def get_mileage(self):
print('行驶里程为',Car.mileage,'千米。')
def set_mileage(self,value):
Car.mileage += value
if __name__ == '__main__':
print('='*5,'第一个实例','='*5)
car = Car()
print('车型:',car.rank) # 输出属性
print('颜色:',car.color) # 输出属性
print('品牌:',car.brand) # 输出属性
# 调用方法
car.get_mileage() # 输出原行驶里程
car.set_mileage(5.6) # 行驶里程增加5.6千米
print('更改行驶里程……')
car.get_mileage() # 输出新行驶里程
print('='*5,'第二个实例','='*5)
car = Car('SUV','黑色','丰田')
print('车型:',car.rank) # 输出属性
print('颜色:',car.color) # 输出属性
print('品牌:',car.brand) # 输出属性
# 调用方法
car.get_mileage() # 输出原行驶里程
car.set_mileage(10) # 行驶里程增加10千米
print('更改行驶里程……')
car.get_mileage() # 输出新行驶里程
运行结果:
===== 第一个实例 =====
车型: 小型车
颜色: white
品牌: 比亚迪
行驶里程为 10 千米。
更改行驶里程……
行驶里程为 15.6 千米。
===== 第二个实例 =====
车型: SUV
颜色: 黑色
品牌: 丰田
行驶里程为 15.6 千米。
更改行驶里程……
行驶里程为 25.6 千米。
【任务验证三】:创建人基类及其派生类
本任务要求:创建人( Person)类,再创建两个派生类。要求如下:
(1)在人基类中,包括类属性name(记录姓名)和方法work(输出现在所做的工作)。
(2)创建一个派生类Student,在该类的__init__ ()方法中输出“我是学生”,并且重写work()方法,输出所做的工作。
(3)创建第二个派生类Teacher,在该类的__init__ ()方法中输出“我是老师”,并且改变类属性name的值,然后再重写work()方法,输出所做的工作。
(4)分别创建派生类的实例,然后调用各自的work()方法,并且输出类属性的值。
class Person:
'''人类(基类)'''
name = '匿名' # 姓名
def work(self):
print('我在工作中……')
class Student(Person): # 定义学生类(派生类)
def __init__(self):
print('我是学生')
def work(self):
print('我在学习中……')
class Teacher(Person): # 定义老师类(派生类)
def __init__(self):
print('\n我是老师')
Person.name = '无语'
student = Student() # 创建类的实例(学生)
print(student.name)
student.work() # 调用派生类的work()方法
teacher = Teacher() # 创建类的实例(老师)
teacher.work() # 调用基类的work()方法
print(teacher.name) # 输出基类的类属性的值
运行结果:
我是学生
匿名
我在学习中……
我是老师
我在工作中……
无语
下面就是我自己写的啦,四个题目就以1~4命名好了orz,和老师的代码其实也没什么特别大的不同诶,有其他想法的同学可以互相交流!
题目1:
class Box:
def __init__(self,length,width,height):
self.a=length
self.b=width
self.c=height
def Vbox(self):
V=self.a*self.b*self.c
return V
def Sbox(self):
S=2*(self.a*self.b+self.b*self.c+self.a*self.c)
return S
mybox=Box(3,2,1)
print(mybox.Vbox())
print(mybox.Sbox())
题目2:
class Car:
def __init__(self,rank = '小型车',color = 'white',brand = '比亚迪'):
self.rank=rank
self.color=color
self.brand=brand
self.mileage=10
def setmileage(self,mileage):
self.mileage = mileage
def getmileage(self):
print('行驶里程为',self.mileage,'千米。')
print('='*5,'第一个实例','='*5)
mycar=Car()
print("车型:",mycar.rank)
print('颜色:',mycar.color)
print('品牌:',mycar.brand)
mycar.getmileage()
mycar.setmileage(5.6)
mycar.getmileage()
print('='*5,'第二个实例','='*5)
car=Car("SUV","黑色","丰田")
print('车型:',car.rank)
print('颜色:', car.color)
print('品牌:',car.brand)
car.getmileage()
car.setmileage(10)
print('更改行驶里程……')
car.getmileage()
题目3:
class Car():
rank = '小型车'
color = 'white'
brand = '比亚迪'
mileage = 10
def __init__(self, rank='小型车', color='white', brand='比亚迪'):
Car.rank = rank
Car.color = color
Car.brand = brand
def get_mileage(self):
print('行驶里程为', Car.mileage, '千米。')
def set_mileage(self, value):
Car.mileage += value
if __name__ == '__main__':
print('=' * 5, '第一个实例', '=' * 5)
car = Car()
print('车型:', car.rank)
print('颜色:', car.color)
print('品牌:', car.brand)
car.get_mileage()
car.set_mileage(5.6)
print('更改行驶里程……')
car.get_mileage()
print('=' * 5, '第二个实例', '=' * 5)
car = Car('SUV', '黑色', '丰田')
print('车型:', car.rank)
print('颜色:', car.color)
print('品牌:', car.brand)
car.get_mileage()
car.set_mileage(10)
print('更改行驶里程……')
car.get_mileage()
题目4:
class Person:
name = 'CAUer'
def work(self):
print('我在工作中……')
class Student(Person):
def __init__(self):
print('我是学生')
def work(self):
print('我在摸鱼中……')
class Teacher(Person):
def __init__(self):
print('我是老师')
Person.name = '李光军'
student = Student()
print(student.name)
student.work()
teacher = Teacher()
teacher.work()
print(teacher.name)