我对在文本文件中找到最大x或y值有疑问。这对于多边形算法中的点是必要的 多边形与点,输入或输出多边形以及多边形的行数一起输入到文本文件中。
例如:
5.0 4.0 6 1.0 1.0 4.0 0.0 6.0 3.0 7.0 6.0 3.0 7.0 0.0 4.0 1.0 1.0
点是[5.0 4.0]
,多边形有6
行,接下来是多边形的写点:
[1.0 1.0][4.0 0.0][6.0 3.0][7.0 6.0][3.0 7.0][0.0 4.0][1.0 1.0].
首先是x坐标,第二个是y坐标。
我有测试2行位置的程序。现在我必须将此过程与这一算法结合起来。
我拥有的是:打开txt读取txt行,然后将其拆分并将值保存到变量
pointinp = open ("pointinp.txt", "r")
for line in pointinp.readlines():
riadok = line.split()
j=3
for i in range (0,riadok[2]):
x1=float(riadok[0])
y1=float(riadok[1])
k1=float(riadok[i+j])
l1=float(riadok[i+(j+1)])
k2=float(riadok[i+(j+2)])
l2=float(riadok[i+(j+3)])
j=j+1
点坐标在x1和y1中,其他点的坐标在k1,l1,k2,l2中。现在我必须从文本文件中找到最大x和y坐标以将其保存到x2,y2。 那么我将有2行[x1,y1] [x2,y2]和[k1,l1] [k2,l2]然后我将测试这些行的位置,这在多边形算法中是必要的,其中将是计算交点。(包含点和每条多边形线的创建线之间的交点)
答案 0 :(得分:2)
Findind 行中的最大x和y 足够简单,您只需将它们分开并将max()函数应用于它们即可。幸运的是,python列表索引支持步长,因此您可以轻松地提取所有其他值:
xvals=riadok[3::2]
yvals=riadok[4::2]
xmax=max(xvals)
ymax=max(yvals)
在文件中查找最大值有点困难:对于每一行,您可以将本地最大值与到目前为止找到的最大值进行比较,如果它更大,则用后者替换后者:
xtruemax=max(xtruemax,xmax)
ytruemax=max(ytruemax,ymax)
但是当你进一步浏览文件时,你会发现这些数字会慢慢增长。如果你想从第一行获得x和y的真正最大值,那么你将需要两次处理你的文件,一次找到最大的x和y,一次应用你的算法。
答案 1 :(得分:0)
如果你喜欢强大的代码,你会喜欢这个:) 如果你只有整数,你可以用float替换float。
file.txt的1 2 3 900000.029384 10000 6 8 900000.029383
maximum = max(map(float,(open('file.txt','r')。readline())。split()))