3月9日

import math

class Point:
    def __init__(self, x=0, y=0):
        self.x = x
        self.y = y

    def distance_from_origin(self):
        """计算点到原点的距离"""
        return math.sqrt(self.x ** 2 + self.y ** 2)

    def __lt__(self, other):
        """小于运算符重载:判断当前点距离原点是否比另一个点更近"""
        return self.distance_from_origin() < other.distance_from_origin()

    def __gt__(self, other):
        """大于运算符重载:判断当前点距离原点是否比另一个点更远"""
        return self.distance_from_origin() > other.distance_from_origin()

    def __le__(self, other):
        """小于等于运算符重载"""
        return self.distance_from_origin() <= other.distance_from_origin()

    def __ge__(self, other):
        """大于等于运算符重载"""
        return self.distance_from_origin() >= other.distance_from_origin()

def main():
    points = []
    for i in range(3):
        while True:  # 循环直到获得有效输入
            try:
                print(f"请输入第{i+1}个点的坐标,格式为 'x y':")
                coords = input().strip().split()
                if len(coords) != 2 or not all(coord.isdigit() for coord in coords):
                    raise ValueError("输入格式错误,请确保输入为两个整数,用空格分隔。")
                points.append(Point(int(coords[0]), int(coords[1])))
                break  # 成功则跳出循环
            except ValueError as e:
                print(f"发生错误:{e} 请重新输入。")

    # 确保至少有三个点后进行后续操作
    if len(points) == 3:
        # 比较并打印结果
        print(f"点的坐标从原点出发的远近顺序为:")
        for point in sorted(points, key=lambda p: p.distance_from_origin(), reverse=True):
            print(f"({point.x}, {point.y})", end=' ')
        print("\n")

        # 示例比较
        print(f"点1与点2的比较:")
        print("点1 > 点2" if points[0] > points[1] else "点1 <= 点2")
    else:
        print("未正确输入所有三个点的坐标。")

if __name__ == "__main__":
    main()

 

posted @ 2025-03-10 08:11  KuanDong24  阅读(8)  评论(0)    收藏  举报