Python入门刷题第三天(类和对象和继承)

python学习到第三天了,怎么说也该学到类和对象了吧,毕竟我java和C都学过,(虽然没学过C++但是勉强会懂),接下来还有Goland和C#要学,速度要加紧咯

第一题:三角形

 这题可以不用类来做,但是毕竟是学习了类和对象,用了巩固一下下。

a = 3.0
b = 5.0
c = 4.0
class triangle:
    def __init__(self,a,b,c):
        self.a = a
        self.b = b
        self.c = c#先初始化三个边长,在python里,用__init__(self,a,b,c):来初始化
#切记,如果用两个__init__(self,a,b,c):的话那么会取最后一个init函数为准,也就是说之前的
#init函数就被覆盖了,这一点等等继承的时候还会再提一遍

    def Judge(self):
        if self.a+self.b>self.c and self.a+self.c>self.b and self.b+self.c>self.a:#先判断能不能构成三角形
            L = [self.a,self.b,self.c]
            L.sort()#先把三条边从小到大排序
            if L[0]*L[0] + L[1]*L[1] > L[2]*L[2]:#判断锐角三角形
                print("R")
            elif L[0]*L[0] + L[1]*L[1] == L[2]*L[2]:#直角三角形
                print("Z")
            elif L[0]*L[0] + L[1]*L[1] < L[2]*L[2]:#钝角三角形
                print("D")
        else:#无法构成三角形
            print("W")
        return ""#这边不写return ""的话会返回一个none,不清楚的把这一行注释掉就知道了

p1 = triangle(a,b,c)
print(p1.Judge())

第二题:求三棱柱

这第二题我自己想的,在第一题的基础上继承他的三角形,然后求出给出高后的这个三棱柱的体积

class V_triangle(triangle):#创建一个名为 V_triangle 的类,它将从 triangle 类继承属性和方法:

如果你只是想单纯的继承它,那么加一个pass即可

当您添加 __init__() 函数时,子类将不再继承父的 __init__() 函数。

子的 __init__() 函数会覆盖对父的 __init__() 函数的继承。

如需保持父的 __init__() 函数的继承,请添加对父的 __init__() 函数的调用:比如super

这一段从Wschool摘录

a = 3.0
b = 5.0
c = 4.0
height = 6
class triangle:
    def __init__(self,a,b,c):
        self.a = a
        self.b = b
        self.c = c
    def Judge(self):
        if self.a+self.b>self.c and self.a+self.c>self.b and self.b+self.c>self.a:#先判断能不能构成三角形
            L = [self.a,self.b,self.c]
            L.sort()#先把三条边从小到大排序
            if L[0]*L[0] + L[1]*L[1] > L[2]*L[2]:#判断锐角三角形
                print("R")
            elif L[0]*L[0] + L[1]*L[1] == L[2]*L[2]:#直角三角形
                print("Z")
            elif L[0]*L[0] + L[1]*L[1] < L[2]*L[2]:#钝角三角形
                print("D")
        else:#无法构成三角形
            print("W")
        return ""

class V_triangle(triangle):#求三棱柱面积,新建一个类继承了triangle
    def __init__(self,a,b,c,height):
        super().__init__(a,b,c)#这样就算继承了父类的abc,同时引入了一个height属性进入V里
    #如果直接def __init__(self,a,b,c,height):的话,那么就不会继承父类,而会覆盖掉父类的init
        self.height = height
    def V_tri(self):
        p = (a + b + c) / 2
        S = (p * (p - a) * (p - b) * (p - c)) ** 0.5#**代表幂运算,如2**0.5代表根号二,这对我来说是个新用法,毕竟以前只会sqrt
        return 1/3.0*S*self.height#三棱柱公式

p1 = V_triangle(a,b,c,height)
print(p1.V_tri())

简单的类和对象和继承到此为止,接下来要尝试更难的东西了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Abandon-Lv

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值