python函数题
2020-12-13 06:06
阅读:246
随机生成n个点并存入字典,每个点的坐标为(x, y),坐标x、y的取值范围是[0,10]之间的整数。
随机生成点的过程中可能会产生重复的点(两个点的坐标值一样),需记录该点生成的次数,如在
整个生成点的过程中生成了3个坐标为(2,1)的点,那么需将3作为点生成次数纪录下来。
最后在字典中查询3次点坐标,并返回查询结果。
建议:使用字典存储点。
思考:如何在此基础上使用蒙特卡洛方法计算圆周率。
步骤如下:
输入n代表要产生n个点
输入x代表随机数种子(注意:设置种子前需将x转化为整型)
- 调用
generatePoint(n)
函数生成n个点,每个点包含x,y坐标,将(x,y)存为元组,然后将该元组作为元素放入列表(可放重复的点坐标),并将该列表返回。 - 调用
createPointDict(pList)
将步骤1生成的点列表pList中的每个点放入字典pDict中,字典的键为点(元组),值为出现次数。 - 调用
doQuery(pDict, p):
在pDict中查询p,如果查到则输出点即出现次数,否则输出Not Found。
注意:需要导入random库
函数接口定义:
generatePoints(n) #产生n个2维坐标点放入列表并返回该列表
createPointDict(pList) #将pList中的节点加入字典并统计出现次数,然后返回字典
doQuery(pDict, p) #在pDict中查询p,如果查到则输出该点及其出现次数,否则输出‘Not Found‘。
裁判测试程序样例:
/* 请在这里填写答案 */
n = int(input())
seed(int(input()))
pList = generatePoints(n)
pDict = createPointDict(pList)
for i in range(3):#查询3次
x, y = [int(e) for e in input().split(‘,‘)]
doQuery(pDict, (x, y))
输入格式:
输入的n代表产生n个坐标点
输入x代表种子(x需转化为整型)
若干个行所要查找的坐标。
输出格式:
如果存在,输出 二维坐标点 = 出现次数
。注:二维坐标点以元组形式出现。
否则输出Not Found
输入样例:
10000
1
2,9
99,100
1,7
输出样例:
(2, 9) = 87
Not Found
(1, 7) = 75
评论
亲,登录后才可以留言!