Python第五次作业

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()
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值