Point类是平面二维点类:私有属性普通字段x,y(表示每个点的坐标);方法有四个:init__初始化方法(用来初始化点 坐标x,y),获取私有普通字段x,y的方法Get X与Get Y(用来获取私有普通字段x,y的值)、专有方法__Str(用格式化输出点信息)等必要的方法。
Circle类是表示平面圆类。Circle类有:私有属性普通字段center(圆心)、radius(半径),方法有三个:__init__初始化方法(用来初始化圆心、与半径)。方法GetStatistics计算该圆与二维点集的位置关系,位置关系有:“圆上、圆外、圆内”三种关系)
函数接口定义:
在这里描述定义两个完整类Point 与 类Circle:
class Point:
class 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:
count = 0
def __init__(self, x, y):
self.__x = x
self.__y = y
Point.count = Point.count + 1
def GetX(self):
return self.__x
def GetY(self):
return self.__y
def __str__(self):
return '('+str(self.__x)+','+str(self.__y)+')'
class Circle:
center=()
radius=0
def __init__(self,cx,cy,r):
self.__cx=cx
self.__cy=cy
self.__r=r
Circle.center='('+str(cx)+','+str(cy)+')'
Circle.radius = self.__r
def GetStatistics(self,Pointlist):
count1 = 0
count2 = 0
count3 = 0
dic={}
for i in range(len(Pointlist)):
a=Pointlist[i].GetX()
b=Pointlist[i].GetY()
rad=(self.__r)*(self.__r)
x=(self.__cx-a)*(self.__cx-a)+(self.__cy-b)*(self.__cx-b)
if x>rad:
count1+=1
while count1==1:
dic["圆外"]=count1
break
elif x<rad:
count2+=1
while count2==1:
dic["圆内"]=count2
break
else:
count3+=1
while count3==1:
dic["圆上"]=count3
break
if "圆外"in dic:
dic["圆外"]=count1
if "圆内"in dic:
dic["圆内"]=count2
if "圆上"in dic:
dic["圆上"]=count3
return dic