1.设计一个Group类,在该类中包括:
一个数据成员(每个学生的分数)、两个类成员total(班级的总分)和count(班级的人数)。成员方法setScore(score)用于设置分数、成员方法sum()用于累计总分、类方法、average()用于求平均值。交互式输入学生的成绩,显示该组的总分和平均分。
class Group:
total = count = 0
def __init__(self, score):
self.score = score
self.sum()
def setScore(self):#设置分数
Group.count += 1 #每增加一个分数人数 +1
return self.score
def sum(self): #累加成绩
Group.total += self.setScore()
@classmethod
def average(cls): #计算平均分
return Group.total/Group.count
@classmethod
def show(cls):
print("总分是:{}".format(Group.total))
# print("总人数是:{}".format(Group.count))
print("平均分是:{:.2f}".format(Group.average()))
a = eval(input("请输入学生数量:"))
lst = [a]
for i in range(a):
lst.append(Group(eval(input("请输入第{}位同学成绩:".format(i+1)))))
Group.show()
2.为二次方程式ax2+bx+c=0设计一个名为Equation的类,这个类包括:
(1)代表三个系数的成员变量a、b、c
(2)一个参数为a、b、c的构造方法
(3)一个名为getDiscriminant()的方法返回判别式的值
(4)一个名为getRoot1()和getRoot2()的方法返回等式的两个根,如果判别式为负,这些方法返回0
import math
class Equation:
def __init__(self, a, b, c):
self.a = a
self.b = b
self.c = c
def getDiscriminant(self):
t = self.b ** 2 - 4 * self.a * self.c
return t
def getRoot1(self):
if self.getDiscriminant() >= 0:
return ((-self.b) + math.sqrt(self.getDiscriminant())) / (2 * self.a)
else:
return 0
def getRoot2(self):
if self.getDiscriminant() >= 0:
return ((-self.b) - math.sqrt(self.getDiscriminant())) / (2 * self.a)
else:
return 0
ff = Equation(1, 2, 1)
print(ff.getDiscriminant())
print(ff.getRoot1())
print(ff.getRoot2())
3.设计一个描述自由落体运动的类,要求能获得任意时刻的速度及位移,并进行测试。已知重力加速度为9.8m/s2
class Fall:
g = 9.8
def __init__(self, t=0):
self.t = t
def get_v(self):
print("速度为:{:.2f}".format(self.t * Fall.g))
def get_s(self):
print("位移为:{:.2f}".format((self.t * Fall.g * self.t) / 2))
f1 = Fall(eval(input("请输入任意时间 t:")))
f1.get_v()
f1.get_s()