1、定義并實作一個矩形類Rectangle,其私有實體成員為矩形的左下角與右上角兩個點的坐標,能設定左下角和右上角兩個點的位置,能根據左下角與右上角兩個點的坐標計算矩形的長、寬、周長和面積,另外根據需要適當添加其他成員方法和特殊方法(如構造方法),實作并測驗這個類,
class Rectangle:
def __init__(self,New_zxx,New_zxy,New_ysx,New_ysy):
self.zxx=New_zxx
self.zxy=New_zxy
self.ysx=New_ysx
self.ysy=New_ysy
self.length = self.ysx - self.zxx
self.width = self.ysy - self.zxy
def perimeter(self):
print('周長:{}'.format(2*(self.length+self.width)))
def area(self):
print('面積為:{}'.format(self.length*self.width))
a = Rectangle(0,0,1,2)
print(a.length)
print(a.width)
a.perimeter()
a.area()
2、創建SchoolMem類,該類中包含三個資料成員:姓名、性別、年齡;創建Student類,繼承自SchoolMem類,添加額外三個資料成員:班級、學號和數量統計;創建Teacher類,繼承自SchoolMem類,添加額外三個資料成員:學院、工號和數量統計,要求給每個類適當添加屬性、成員方法和特殊方法(如構造方法),實作學生和教師資訊的輸入輸出,實作并測驗這個類,(建議在父類和子類中使用同名函式以實作多型,如在SchoolMem類、Student類和Teacher類中分別實作printInfo方法輸出物件的資訊,)
class SchoolMem:
def __init__(self,name,sex,age):
self.name=name
self.sex = sex
self.age = age
def Alter(self):
self.name = input('姓名')
self.sex = input('性別')
self.age = input('年齡')
def PrintInfo(self):
print(self.name)
print(self.sex)
print(self.age)
class Student(SchoolMem):
total = 0
def __init__(self,name,sex,age,cno,sno):
super().__init__(name,sex,age)
self.cno = cno
self.sno = sno
Student.total+=1
def Alter(self):
self.cno = input('輸入學生所屬班級:')
self.sno = input('輸入學生學號:')
def PrintInfo(self):
super(Student, self).PrintInfo()
print(self.cno)
print(self.sno)
class Teacher(SchoolMem):
total = 0
def __init__(self,name,sex,age,cono,jno):
super().__init__(name, sex, age)
self.cono = cono
self.jno = jno
Teacher.total +=1
def Alter(self):
self.cono = input('輸入老師所屬學院:')
self.jno = input('輸入老師工號:')
def PrintInfo(self):
super(Teacher, self).PrintInfo()
print(self.cono)
print(self.jno)
a=Student('張三','男','18',5,1902073564)
a.PrintInfo()
b=Teacher('李四','男','30',2,1351332)
b.PrintInfo()
3、給如下自定義串列類Mylist添加運算子多載函式,實作自定義串列的加法和乘法運算
class Mylist:
def __init__(self,iterable=()):
self.data = list(iterable)
讓如下代碼能正確運行:
L1 = MyList([1,2,3])
L2 = MyList([4,5,6])
L3 = L1+ L2
print(L3) #輸出MyList([1,2,3,4,5,6])
L4 = L2 + L1
print(L4) #輸出MyList([4,5,6,1,2,3])
L5 = L1 * 3
print(L5) #輸出MyList([1,2,3,1,2,3,1,2,3])
L6 = 3 * L1
print(L6) #輸出MyList([1,2,3,1,2,3,1,2,3])
L1 += L2
print(L1) #輸出MyList([1,2,3,4,5,6])
L7 = -L1
print(L7) #輸出MyList([-1,-2,-3,-4,-5,-6])
class MyList:
def __init__(self,iterable=()):
self.data = list(iterable)
def __add__(self, other):
a = MyList(self.data + other.data)
return a
def __mul__(self, n):
b = MyList(self.data * 3)
return b
def __rmul__(self, n):
c = MyList(3*self.data)
return c
def __iadd__(self, other):
self.data += other.data
return self
def __neg__(self):
e = MyList()
for i in self.data:
e.data.append(i*-1)
return e
def __repr__(self):
return repr('MyList({})'.format(self.data))
L1 = MyList([1,2,3])
L2 = MyList([4,5,6])
L3 = L1 + L2
print(L3) #輸出MyList([1,2,3,4,5,6])
L4 = L2 + L1
print(L4) #輸出MyList([4,5,6,1,2,3])
L5 = L1 * 3
print(L5) #輸出MyList([1,2,3,1,2,3,1,2,3])
L6 = 3 * L1
print(L6)
L1 += L2
print(L1)
L7 = -L1
print(L7) #輸出MyList([-1,-2,-3,-4,-5,-6])
4、設計一個用于學生管理的類Student(學生),考慮到通用性,這里只抽象出所有學生都具有的資料成員:學號、姓名、性別、年齡、班級等,要求給每個資料成員宣告對應的讀寫屬性,定義下列成員方法:學生資訊的錄入、顯示以及修改,另外根據需要適當添加特殊方法(如構造方法),實作并測驗這個類,
class Student:
def __init__(self,sno='',name='',sex='',age=0,classes=0):
self.__sno = sno
self.__name = name
self.__sex = sex
self.__age = age
self.__classes = classes
def __get(self):
return self.__sno
def __set(self,a):
self.__sno = a
sno = property(__get,__set)
def __get__(self):
return self.__name
def __set(self,a):
self.__name = a
name = property(__get,__set)
def __get(self):
return self.__sex
def __set(self,a):
self.__sex = a
sex = property(__get,__set)
def __get(self):
return self.__age
def __set(self,a):
self.__age = a
age = property(__get,__set)
def __get(self):
return self.__classes
def __set(self,a):
self.__classes = a
classes = property(__get,__set)
def InputInfo(self):
print('輸入學生資訊')
sno = input('學號:')
if not (len(sno)==10):
print('學號必須是十位')
return None
name = input('姓名:')
sex = input('性別(男,女)')
if sex not in ('男','女'):
print('性別必須是男或女')
return None
age = eval(input('年齡:'))
if not isinstance(age,int):
print('年齡必須為整數')
return None
classes = input('班級:')
self.__sno = sno
self.__name = name
self.__sex = sex
self.__age = age
self.__classes = classes
return self
def show(self):
print(f'sno:{self.__sno}\nname:{self.__name}\nsex:{self.__sex}\nage:{self.__age}\nclasses:{self.__classes}')
def alter(self):
while True:
print('選擇您要更改的資訊:')
print('1:修改學號')
print('2:修改姓名')
print('3:修改性別')
print('4:修改年齡')
print('5:修改班級')
print('0:退出修改')
i = eval(input('輸入選項:'))
if i == 0:
self.show()
break
elif i==1:
sno = input('輸入學號:')
if not len(sno)==10:
print('學號為10位')
continue
self.__sno = sno
elif i == 2:
name = input('輸入姓名:')
self.__name = name
elif i == 3:
sex = input('性別(男,女)')
if sex not in ('男', '女'):
print('性別必須是男或女')
continue
self.__sex = sex
elif i == 4:
age = eval(input('年齡:'))
if not isinstance(age, int):
print('年齡必須為整數')
continue
self.__age = age
elif i == 5:
self.__classes = input('班級:')
a = p6t4.Student()
a.InputInfo()
輸入學生資訊:
學號:>? 1901070217
姓名:>? gzk
性別(男,女)>? 男
年齡:>? 15
班級:>? 2
<p6t4.Student object at 0x00000211D488A288>
a.show()
sno:1901070217
name:gzk
sex:男
age:15
classes:2
a.alter()
選擇您要更改的資訊:
1:修改學號
2:修改姓名
3:修改性別
4:修改年齡
5:修改班級
0:退出修改
輸入選項:>? 2
輸入姓名:>? 郭zk
選擇您要更改的資訊:
1:修改學號
2:修改姓名
3:修改性別
4:修改年齡
5:修改班級
0:退出修改
輸入選項:>? 0
sno:1901070217
name:郭zk
sex:男
age:15
classes:2
5、在第4題的基礎上定義并實作一個學生陣列類StudentArray,支持一批學生資訊的處理,能實作以下選單功能:
(1)學生資訊錄入
(2)學生資訊顯示(顯示所有學生資訊)
(3)學生資訊洗掉(按學號)
class StudentArray:
__size = 0
def __init__(self):
self.__value = []
def InputInfo(self):
a = Student()
a = a.InputInfo()
if a != None:
self.__value.append(a)
print('錄入成功')
StudentArray.__size += 1
def search(self):
sno = input('請輸入查詢學號:')
for i in range(len(self.__value)):
if sno == self.__value[i].sno:
return i
else:
print('不存在此學號的學生')
return -1
def show(self):
print('所有學生資訊為:')
for a in self.__value:
a.show()
print('測驗')
def delete(self):
i = self.search()
if i != -1:
del self.__value[i]
StudentArray.__size -= 1
print('洗掉成功')
else:
print('洗掉失敗')
def menu():
print('''
1.學生資訊錄入
2.學生資訊顯示
3.學生資訊洗掉
4.退出系統''')
def main():
b = StudentArray()
while True:
menu()
n = eval(input('請輸入選擇:'))
if n == 1:
b.InputInfo()
print()
elif n == 2:
b.show()
print()
elif n == 3:
b.delete()
print()
elif n ==4:
print('已經退出系統')
break
else:
print('輸入錯誤,重新輸入')
print()
if __name__ == '__main__':
main()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/229466.html
標籤:python
上一篇:python實作二維圖制作
