011、py43-day12-sky-20210818

 

 

 

2、练习 题:
题目1:
定义一个类Triangle用来表示三角形
定义初始化方__init__法接收三个点作为参数
(点可以用二元元组来表示,也可以使用课堂上的Point类的实例来表示,注意判断是否三个点不同)
定义方法isosceles用来判断三角形是否是等腰三角形,输出True 或False(提示,计算三个点的距离,有两个距离相等就是等腰三角形)
定义方法is_equal_sides用来判断三角形是否等边三角形,输出True或False(提示,计算三个点的距离,三个距离相等)

 

实例化2个对象

代码如下:

import math


# 定义一个 坐标点 类
class Point:

    def __init__(self, x, y):
        self.x = x
        self.y = y


# 定义一个三角形类
class Triangle:

    def __init__(self, point1, point2, point3):
        self.point1 = point1
        self.point2 = point2
        self.point3 = point3

    # 判断三点是否为同一个点
    def is_different_points(self):
        x1 = self.point1.x
        x2 = self.point2.x
        x3 = self.point3.x

        y1 = self.point1.y
        y2 = self.point2.y
        y3 = self.point3.y

        if x1 == x2 == x3 and y1 == y2 == y3:
            print('\n三点为同一个点,不能构成三角形')
            return False
        else:
            print('\n三点不为同一个点')
            p1_p2 = math.sqrt((x1-x2)**2 + (y1-y2)**2)
            p1_p3 = math.sqrt((x1-x3)**2 + (y1-y3)**2)
            p2_p3 = math.sqrt((x2-x3)**2 + (y2-y3)**2)

            return p1_p2, p1_p3, p2_p3

    # 判断等腰三角形
    def isosceles(self):
        points_tuple = self.is_different_points()
        if points_tuple:
            x = points_tuple[0]
            y = points_tuple[1]
            z = points_tuple[2]
            if (x + y > z) and (x + z > y) and (y + z > x):
                if x == y or x == z or y ==z:
                    print('等腰三角形')
                    return True
                else:
                    print('一般三角形')
                    return False
            else:
                print('任意两边之和没有大于第三遍,不能构成三角形')
                return False

    # 判断等边三角形
    def is_equal_sides(self):
        points_tuple = self.is_different_points()
        if points_tuple:
            x = points_tuple[0]
            y = points_tuple[1]
            z = points_tuple[2]
            if (x + y > z) and (x + z > y) and (y + z > x):
                if x == y == z :
                    print('等边三角形')
                    return True
                else:
                    print('不是等边三角形')
                    return False
            else:
                print('任意两边之和没有大于第三遍,不能构成三角形')
                return False


# 等腰三角形
# 1、先实例化 3个点
p1 = Point(0, 0)
p2 = Point(-2, 2)
p3 = Point(2, 2)

# 再实例化一个三角形
t = Triangle(p1, p2, p3)
t.isosceles()
t.is_equal_sides()

print('\n========= 实例化第二个三角形 ==========')
# 2、等边三角形
# 先实例化 3个点
p1 = Point(0, -6)
p2 = Point(0, 6)
p3 = Point(-6*math.sqrt(3), 0)

# 再实例化一个三角形
t = Triangle(p1, p2, p3)
t.isosceles()
t.is_equal_sides()


print('\n========= 实例化第三个三角形 ==========')
# 2、3点为同一个点
# 先实例化 3个点
p1 = Point(1, 1)
p2 = Point(1, 1)
p3 = Point(1, 1)

# 再实例化一个三角形
t = Triangle(p1, p2, p3)
t.isosceles()
t.is_equal_sides()

执行结果如下:

D:\SkyWorkSpace\WorkSpace\Pytest\Temp\day09\venv\Scripts\python.exe D:/SkyWorkSpace/WorkSpace/Pytest/Temp/day09/test_05/py43-day12-sky-20210818.py

三点不为同一个点
等腰三角形

三点不为同一个点
不是等边三角形

========= 实例化第二个三角形 ==========

三点不为同一个点
等腰三角形

三点不为同一个点
等边三角形

========= 实例化第三个三角形 ==========

三点为同一个点,不能构成三角形

三点为同一个点,不能构成三角形

Process finished with exit code 0

 

上一篇:位运算判断是否是2的幂


下一篇:011:编程填空:前K大的偶数