時間關系 代碼只基本實現題目基本要求
最后一題使用昨天作業模塊快速實現
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