python">#计算点(5,5)方圆2单位长度范围内点的数量
import xlrd
import math
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
#将excel的两列转化为列表
worksheet = xlrd.open_workbook(u'C:/Users/Administrator/Desktop/data.xlsx')
sheet_names= worksheet.sheet_names()
for sheet_name in sheet_names:
sheet = worksheet.sheet_by_name(sheet_name)
rows = sheet.nrows # 获取行数
cols = sheet.ncols # 获取列数,尽管没用到
all_content1 = []
for i in range(1,rows) : #excel第一行是列名,从第二列开始取数
cell1 = sheet.cell_value(i, 0) # 取第一列列数据
try:
all_content1.append(cell1)
except ValueError as e:
pass
for sheet_name in sheet_names:
sheet = worksheet.sheet_by_name(sheet_name)
rows = sheet.nrows # 获取行数
cols = sheet.ncols # 获取列数
all_content2 = []
for i in range(1,rows) :
cell2 = sheet.cell_value(i, 1) # 取第二列列数据
try:
all_content2.append(cell2)
except ValueError as e:
pass
length1=len(all_content1) #计算列表的长度
data=zip(all_content1,all_content2) #使用zip函数将两个列表打包成一个元组
#绘图
data=pd.read_excel('C:/Users/Administrator/Desktop/data.xlsx')
plt.plot(5,5,c="r",marker="o")
plt.scatter(data['x'],data['y'],c="b",marker="o")
plt.axis([0,10,0,10])
#目标点为(5,5)
x2=5
y2=5
r=2 #决定搜索半径为2
theta=np.arange(0,2*np.pi,0.01)
x=x2+r*np.cos(theta)
y=y2+r*np.sin(theta)
plt.plot(x,y,c="k")
count=0
for i in range(length1): #遍历10个点
x1=all_content1[i]
y1=all_content2[i]
d=math.sqrt(math.pow((x2-x1),2)+math.pow((y2-y1),2)) #计算两点之间的距离
if d<r:
count+=1
print('点(5,5)方圆2单位内共有%d个点'%count)
with open('C:/Users/Administrator/Desktop/点数.txt','a',encoding='utf-8') as f: #数据保存到txt文本
text='%d\n'%count
f.write(text)