0.定义一个学生类。有属性:姓名、年龄、成绩(语文,数学,英语)[每课成绩的类型为整数]
方法: a. 获取学生的姓名:getname() b. 获取学生的年龄:getage()
c. 返回3门科目中最高的分数。get_course()
一、创建实例不输入成绩,成绩随机生成
import random
class Student:
key_math="math"
key_chinese="chinese"
key_english='english'
score={key_chinese:random.randint(1,101),
key_math:random.randint(1,101),
key_english:random.randint(1,101)}
def __init__(self,name,age):
self.name=name
self.age=age
self.score=self.__class__.score
def getname(self):
return self.name
def getage(self):
return self.age
def get_course(self):
math=self.score.get(Student.key_math)
chinese=self.score.get(Student.key_chinese)
english=self.score.get(Student.key_english)
return sorted([math,chinese,english],reverse=True)[0]
stu=Student("小王",22)
print(stu.getname())
print(stu.getage())
print(stu.get_course())
'''
小王
22
87
'''
二、创建实例后给属性赋值并检验
setter和getter起始
class Student:
def __init__(self,name,age):
self.name=name
self.age=age
self._score=()
@property
def score(self):
return self._score
@score.setter
def score(self,score):
try:
for x in score:
if not isinstance(x,int):
raise TypeError("We expect score`type is int")
if not 0 <= x <= 100:
raise ValueError("We expect score from 1 to 100")
except (TypeError,ValueError) as e:
print("You are a stupid guy!-->",e)
self._score =None
else:
print("A correct score is Done")
self._score=score
def getname(self):
return self.name
def getage(self):
return self.age
def get_course(self):
if self._score==None:
return "没有成绩"
else:
return sorted(self._score,reverse=True)[0]
stu=Student("小王",22)
stu.score=(99,78,88)
print(stu.get_course())
stu.score=(99.5,78,88.8)
print(stu.get_course())
stu.score=(200,78,88.8)
print(stu.get_course())
'''
A correct score is Done
99
You are a stupid guy!--> We expect score`type is int
没有成绩
You are a stupid guy!--> We expect score from 1 to 100
没有成绩
'''
1.建立一个汽车类Auto,包括轮胎个数,汽车颜色,车身重量,速度等成员变量,并通过不同的构造方法创建实例。至少要求 汽车能够加速 减速 停车。 再定义一个小汽车类CarAuto 继承Auto 并添加空调、CD等成员变量 覆盖加速 减速的方法
class Auto:
def __init__(self,wheel,color,weight):
self.wheel = wheel
self.color = color
self.weight = weight
def accelerate(self):
print("加速")
def slow_down(self):
print("减速")
def stop(self):
print("停车")
class CarAuto(Auto):
def __init__(self,cd,air,wheel,color,weight):
Auto.__init__(self, wheel, color,weight)
self.cd=cd
self.air_condition=air
def __repr__(self):
return str(self.__dict__)
def accelerate(self):
print("%s加速" % self.__class__.__name__)
def slow_down(self):
print("%s减速" % self.__class__.__name__)
benz=CarAuto("cd","kongtiao",4,"blue",1000)
print(benz)
benz.accelerate()
benz.slow_down()
'''
{'wheel': 4, 'color': 'blue', 'weight': 1000, 'cd': 'cd', 'air_condition': 'kongtiao'}
CarAuto加速
CarAuto减速
'''
2.创建一个名为User 的类,其中包含属性firstname 和lastname ,还有用户简介通常会存储的其他几个属性。在类User 中定义一个名 为describeuser() 的方法,它打印用户信息摘要;再定义一个名为greetuser() 的方法,它向用户发出个性化的问候。
管理员是一种特殊的用户。编写一个名为Admin 的类,让它继承User类。添加一个名为privileges 的属性,用于存储一个由字符串(如"can add post"、"can delete post"、"can ban user"等)组成的列表。编写一个名为show_privileges()的方法,它显示管理员的权限。创建一个Admin 实例,并调用这个方法。
3.创建一个Person类,添加一个类字段用来统计Perosn类的对象的个数
(尝试)5.写一个类,其功能是:1.解析指定的歌词文件的内容 2.按时间显示歌词 提示:歌词文件的内容一般是按下面的格式进行存储的。歌词前面对应的是时间,在对应的时间点可以显示对应的歌词
[00:00.20]蓝莲花
[00:00.80]没有什么能够阻挡
[00:06.53]你对自由地向往
[00:11.59]天马行空的生涯
[00:16.53]你的心了无牵挂
[02:11.27][01:50.22][00:21.95]穿过幽暗地岁月
[02:16.51][01:55.46][00:26.83]也曾感到彷徨
[02:21.81][02:00.60][00:32.30]当你低头地瞬间
[02:26.79][02:05.72][00:37.16]才发觉脚下的路
[02:32.17][00:42.69]心中那自由地世界
[02:37.20][00:47.58]如此的清澈高远
[02:42.32][00:52.72]盛开着永不凋零
[02:47.83][00:57.47]蓝莲花
import re
class AnalysisSong:
def __init__(self,filename,time):
self.filename = filename
self.time=time*100
@staticmethod
def text_read(file_name):
try:
with open("./file/"+file_name,'r',encoding="utf-8") as f:
song=f.readlines()
col=[]
for sentence in song:
time=re.findall(r"\[(\d{2}\S\d{2}\S\d{2})\]", sentence)
chinese= ''.join(re.findall(r"[(\u4e00-\u9fa5))]", sentence))
if type(time) is list:
for i in range(0,len(time)):
temp=re.split("\D", time[i])
result=int(temp[2])+int(temp[1])*100+int(temp[0])*60*100
col.append((result,chinese))
else:
temp = re.split("\D", time)
result = int(temp[2])+int(temp[1])*100+int(temp[0])*60*100
col.apppend((result,chinese))
col.sort(key=lambda x: x[0]) #处理成毫秒级别并返回列表,列表元素为元组
return col
except FileNotFoundError:
print("%s文件不存在"% file_name)
return None
def analysis(self):
songs=AnalysisSong.text_read(self.filename)
if self.time<songs[0][0]:
print("时间过短,歌词未开始")
elif self.time>songs[len(songs)-1][0]:
print('输入时间太长,歌词已结束')
for i in range(0,len(songs)):
if songs[i][0]<=self.time<=songs[i+1][0]:
print(songs[i][1])
temp=AnalysisSong("song.txt",100)
print(AnalysisSong.text_read(temp.filename))
temp.analysis()
'''
结果为:
[(20, '蓝莲花'), (80, '没有什么能够阻挡'), (113, '你对自由地向往'), (169, '天马行空的生涯'), (213, '你的心了无牵挂'), (305, '穿过幽暗地岁月'), (343, '也曾感到彷徨'), (350, '当你低头地瞬间'), (386, '才发觉脚下的路'), (489, '心中那自由地世界'), (528, '如此的清澈高远'), (592, '盛开着永不凋零'), (617, '蓝莲花'), (1122, '穿过幽暗地岁月'), (1196, '也曾感到彷徨'), (1260, '当你低头地瞬间'), (1322, '才发觉脚下的路'), (1337, '穿过幽暗地岁月'), (1411, '也曾感到彷徨'), (1491, '当你低头地瞬间'), (1537, '心中那自由地世界'), (1539, '才发觉脚下的路'), (1590, '如此的清澈高远'), (1652, '盛开着永不凋零'), (1753, '蓝莲花')]
蓝莲花
'''
(选做)6.使用面向对象做一个游戏(打飞机和坦克,以及自己设计一个都行)
网友评论