时间关系 代码只基本实现题目基本要求
最后一题使用昨天作业模块快速实现
1. 建立一个汽车类Auto
-包括轮胎个数,汽车颜色,车身重量,速度等属性,
- 并通过不同的构造方法创建实例。至少要求 汽车能够加速 减速 停车。
- 再定义一个小汽车类CarAuto 继承Auto 并添加空调、CD属性,并且重新实现方法覆盖加速、减速的方法
class Auto:
auto_name = '汽车'
def __init__(self):
self.tyre_num = 4
self.colour = '白色'
self.Losing = 140
def accelerate(self):
return self.__class__.auto_name + '加速'
@classmethod
def slow_down(cls):
return cls.auto_name + '减速'
@staticmethod
def parking():
return Auto.auto_name + '停车'
- 并通过不同的构造方法创建实例。至少要求 汽车能够加速 减速 停车。
print(Auto().accelerate(), Auto.slow_down(), Auto.parking())
'''
汽车加速 汽车减速 汽车停车
'''
- 再定义一个小汽车类CarAuto 继承Auto 并添加空调、CD属性,并且重新实现方法覆盖加速、减速的方法
class CarAoto(Auto):
def __init__(self):
super().__init__()
self.cd = '建武'
self.air_conditioner = ''
c1 = CarAoto()
print(c1.__dict__)
print(c1.parking(), c1.slow_down(), c1.accelerate())
'''
{'tyre_num': 4, 'colour': '白色', 'Losing': 140, 'cd': '建武', 'air_conditioner': ''}
汽车停车 汽车减速 汽车加速
'''
2. 创建一个Person类
- 添加一个类字段用来统计Perosn类的对象的个数
class Person:
num = 0
def __init__(self):
Person.num += 1
p1 = Person()
p2 = Person()
p3 = Person()
p4 = Person()
print(Person.num)
'''
4
'''
3. 创建一个动物类
- 拥有属性:性别、年龄、颜色、类型 ,
- 要求打印这个类的对象的时候以'/XXX的对象: 性别-? 年龄-? 颜色-? 类型-?/' 的形式来打印
class Animal:
def __init__(self):
self.gender = '?'
self.age = '?'
self.colour = '?'
self.type = '?'
def __str__(self):
return '/%s的对象: 性别-%s 年龄-%s 颜色-%s ' \
'类型-%s/' % (str(self.__class__)[17:-2],self.gender,self.age,self.colour,self.type)
a=Animal()
print(a)
"""
/Animal的对象: 性别-? 年龄-? 颜色-? 类型-?/
"""
4. 写一个圆类
- 拥有属性半径、面积和周长;要求获取面积和周长的时候的时候可以根据半径的值把对应的值取到。但是给面积和周长赋值的时候,程序直接崩溃,并且提示改属性不能赋值
class ProhibitError(Exception):
def __str__(self):
return '禁止输入'
import math
class Circle:
def __init__(self):
self.radius = 5
self._area = ''
self._perimeter = ''
@property
def area(self):
return self.radius**2 * math.pi
@property
def perimeter(self):
return 2 * self.radius * math.pi
@area.setter
def area(self, date):
raise ProhibitError
@perimeter.setter
def perimeter(self,date):
raise ProhibitError
circel1 = Circle()
print(circel1.area)
print(circel1.perimeter)
'''
78.53981633974483
31.41592653589793
'''
# circel1.area = 100
'''
raise ProhibitError
__main__.ProhibitError: 禁止输入
'''
# circel1.perimeter = 100
'''
raise ProhibitError
__main__.ProhibitError: 禁止输入
'''
5. 面向对象学生管理系统(挣扎)
import stumsg as stu
class1 = stu.Class('Python1901')
class1.add_student('stu1', 18)
class1.add_student('stu2', 28)
class1.add_student('stu3', 38)
class1.add_student('stu4', 48)
msg = """
=====学生信息管理系统=====
1.显示学生信息
2.添加学生
3.删除学生
退出>0 流浪Python
==========================
"""
msg1 = """
=======显示学生信息=======
"""
msg2 = """
=========添加学生=========
"""
msg3 = """
=========删除学生=========
"""
msg9 = """
退出>0 流浪Python
==========================
"""
while True:
print(msg)
num = input('请选着(0-3):')
if num == '0':
break
elif num == '1':
while True:
print(msg1)
print(class1.show_seudents())
print(msg9)
num = input('按 0 退出:')
if num == '0': break
elif num == '2':
while True:
print(msg2)
name = input('姓名:')
age = input('年龄:')
class1.add_student(name, int(age))
num = input('回车继续,按 0 退出:')
if num == '0':
break
elif num == '3':
while True:
print(msg3)
name = input('姓名:')
class1.del_student(name)
num = input('回车继续,按 0 退出:')
if num == '0':
break
stumsg模块
class Student:
def __init__(self, class_name, number, name, age, ):
self.name = name
self.age = age
self.number = number
self.class_name = class_name
def response(self):
return self.name + ' 到'
def show(self):
str1 = '班级:' + self.class_name
str1 += ' 姓名:' + self.name
str1 += ' 年龄:' + str(self.age)
str1 += ' 学号:' + self.number
return str1
class Class:
def __init__(self, class_name):
self.students = []
self.class_name = class_name
self.class_name_num = ''.join([char for char in self.class_name if '0' <= char <= '9'])
self.number = ('stu' + self.class_name_num + str(x).zfill(2) for x in range(100))
def add_student(self, name, age):
"""添加学生信息,需要名字和年龄"""
student = Student(self.class_name, next(self.number), name, age)
self.students.append(student)
def del_student(self, name):
"""通过名字,删除一个学生的资料,资料会返回"""
for index in range(len(self.students)):
if self.students[index].name == name:
return self.students.pop(index)
def show_seudents(self):
"""显示所有学生信息"""
str1 = ''
for student in self.students:
str1 += student.show() + '\n'
return str1
def show_class(self):
'''显示班级信息'''
return self.class_name, str(len(self.students))
def call_the_roll(self):
"""点名"""
str1 = ''
for student in self.students:
str1 += student.response() + '\n'
return str1
def average_age(self):
lenght = len(self.students)
sum1 = 0
for student in self.students:
sum1 += student.age
return '%.2f'%(sum1/lenght)
运行效果
=====学生信息管理系统=====
1.显示学生信息
2.添加学生
3.删除学生
退出>0 流浪Python
==========================
请选着(0-3):1
=======显示学生信息=======
班级:Python1901 姓名:stu1 年龄:18 学号:stu190100
班级:Python1901 姓名:stu2 年龄:28 学号:stu190101
班级:Python1901 姓名:stu3 年龄:38 学号:stu190102
班级:Python1901 姓名:stu4 年龄:48 学号:stu190103
退出>0 流浪Python
==========================
按 0 退出:0
=====学生信息管理系统=====
1.显示学生信息
2.添加学生
3.删除学生
退出>0 流浪Python
==========================
请选着(0-3):2
=========添加学生=========
姓名:ss
年龄:12
回车继续,按 0 退出:
=========添加学生=========
姓名:sdsd
年龄:13
回车继续,按 0 退出:0
=====学生信息管理系统=====
1.显示学生信息
2.添加学生
3.删除学生
退出>0 流浪Python
==========================
请选着(0-3):1
=======显示学生信息=======
班级:Python1901 姓名:stu1 年龄:18 学号:stu190100
班级:Python1901 姓名:stu2 年龄:28 学号:stu190101
班级:Python1901 姓名:stu3 年龄:38 学号:stu190102
班级:Python1901 姓名:stu4 年龄:48 学号:stu190103
班级:Python1901 姓名:ss 年龄:12 学号:stu190104
班级:Python1901 姓名:sdsd 年龄:13 学号:stu190105
退出>0 流浪Python
==========================
按 0 退出:0
=====学生信息管理系统=====
1.显示学生信息
2.添加学生
3.删除学生
退出>0 流浪Python
==========================
请选着(0-3):3
=========删除学生=========
姓名:ss
回车继续,按 0 退出:0
=====学生信息管理系统=====
1.显示学生信息
2.添加学生
3.删除学生
退出>0 流浪Python
==========================
请选着(0-3):1
=======显示学生信息=======
班级:Python1901 姓名:stu1 年龄:18 学号:stu190100
班级:Python1901 姓名:stu2 年龄:28 学号:stu190101
班级:Python1901 姓名:stu3 年龄:38 学号:stu190102
班级:Python1901 姓名:stu4 年龄:48 学号:stu190103
班级:Python1901 姓名:sdsd 年龄:13 学号:stu190105
退出>0 流浪Python
==========================
按 0 退出:0
=====学生信息管理系统=====
1.显示学生信息
2.添加学生
3.删除学生
退出>0 流浪Python
==========================
请选着(0-3):0