pta平面二维点集与圆位置关系统计Python

Point类是平面二维点类:私有属性普通字段x,y(表示每个点的坐标);方法有四个:init__初始化方法(用来初始化点 坐标x,y),获取私有普通字段x,y的方法Get X与Get Y(用来获取私有普通字段x,y的值)、专有方法__Str(用格式化输出点信息)等必要的方法。

Circle类是表示平面圆类。Circle类有:私有属性普通字段center(圆心)、radius(半径),方法有三个:__init__初始化方法(用来初始化圆心、与半径)。方法GetStatistics计算该圆与二维点集的位置关系,位置关系有:“圆上、圆外、圆内”三种关系)

函数接口定义:

在这里描述定义两个完整类Point 与 类Circle:
class Pointclass Circle

Point类是表平面二维点类,PointSet类是表平面二维点集类,需要考生完整定与实现(包括类声明语句class Point:,class Circle:)

裁判测试程序样例:


/* 您的答案将嵌入到这里 */

在这里给出类被调用进行测试的例子:
if __name__ == "__main__":
    Pointlist=[]  
    n=eval(input())  #读入整数n
    for i in range(n):  # 读入n个点
        x,y=eval(input())
        Pointlist.append(Point(x, y))
    cx,cy,r=eval(input())  #读入圆心坐标与半径
    cir=Circle(cx,cy,r) 
    Pdict=cir.GetStatistics(Pointlist)  
    print('点集为:',end='')
    for i in range(0, len(Pointlist)):  #  在一行输出各个点坐标
            print(Pointlist[i],end=' ')
    print()  #换行
    print('圆: 圆心{},半径({})'.format(cir.center,cir.radius))
    print('统计结果为:',end='')
    print(Pdict)  #输出统计的点位置关系


输入样例1:
在这里给出一组输入。例如:

1
0,1
0,0,1

输出样例1:
在这里给出相应的输出。例如:

点集为:(0,1): 圆心(0,0),半径(1)
统计结果为:{'圆上': 1}

输入样例2:
在这里给出一组输入。例如:

6
5,5
1,2
3,4
5,0
3,2
-4,2
0,0,5

输出样例2:
在这里给出相应的输出。例如:

点集为:(5,5) (1,2) (3,4) (5,0) (3,2) (-4,2): 圆心(0,0),半径(5)
统计结果为:{'圆外': 1, '圆内': 3, '圆上': 2}

代码如下:

class Point:
    def __init__(self,x,y):
        self.x = x
        self.y = y
    def __str__(self):
        return "(" + str(self.x) + ',' + str(self.y) + ')'
class Circle:
    def __init__(self,x,y,radius):
        self.center = Point(x,y)
        self.radius = radius
    def GetStatistics(self,Pointlist):
        pridic = {}
        for i in Pointlist:
            if (i.x - self.center.x)**2 + (i.y - self.center.y)**2 > self.radius ** 2:
                if "圆外" not in pridic:
                    pridic["圆外"] = 1
                else:
                    pridic["圆外"] += 1
            elif (i.x - self.center.x)**2 + (i.y - self.center.y)**2 < self.radius ** 2:
                if "圆内" not in pridic:
                    pridic["圆内"] = 1
                else:
                    pridic["圆内"] += 1
            else:
                if "圆上" not in pridic:
                    pridic["圆上"] = 1
                else:
                    pridic["圆上"] += 1
        return pridic
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

mtplato.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值