【问题标题】:Python: find maximum x-value and maximum y-value in text filePython:在文本文件中查找最大 x 值和最大 y 值
【发布时间】:2011-12-02 16:11:54
【问题描述】:

我对在文本文件中查找最大 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] 然后我将测试这些行的位置,这在多边形算法中是必要的,其中将是计算交点。(创建的包含点的线与多边形的每条线之间的交点)

【问题讨论】:

    标签: python max polygon point min


    【解决方案1】:

    中找到最大 x 和 y 很简单,您只需要能够将它们分开并对其应用 max() 函数即可。幸运的是,python 列表索引支持步长,因此您可以轻松提取每个其他值:

    xvals=riadok[3::2]
    yvals=riadok[4::2]
    xmax=max(xvals)
    ymax=max(yvals)
    

    file 中找到最大值有点困难:对于每一行,您可以将局部最大值与目前找到的最大值进行比较,如果后者更大,则将后者替换为前者:

    xtruemax=max(xtruemax,xmax)
    ytruemax=max(ytruemax,ymax)
    

    但是当您进一步浏览文件时,您会发现这些数字在缓慢增长。如果您想从第一行获得真正的最大值 x 和 y,那么您将必须分两遍处理您的文件,一次是为了找到最大的 x 和 y,一次是应用您的算法。

    【讨论】:

    • 我不知道我是否理解够了。没错,我明白它的原理,但不知道怎么做 - 在文件中找到局部最大值并进行比较。代码会是什么样子?它将与所有值进行比较(因此 x 将与 y 进行比较),或者?
    • 使用与之前相同的示例:`for line in pointinp.readlines(): riadok=line.split() xvals=riadok[3::2] yvals=riadok[4::2] xmax=max(xvals) ymax=max(yvals) xtruemax=max(xtruemax,xmax) ytruemax=max(ytruemax,ymax) pointinp.seek(0) for line in pointinp.readlines(): ' wether您将 xmax 与 x 和 y 进行比较,或者仅将 y 与您的应用程序的性质进行比较。
    【解决方案2】:

    如果你喜欢功能强大的代码,你会喜欢这个 :) 如果你只有整数,你可以用 int 代替 float。

    文件.txt

    1 2 3 900000.029384 10000 6 8 900000.029383

    最大值= max(map(float,(open('file.txt', 'r').readline()).split()))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-07
      • 2017-06-09
      • 2014-03-13
      • 2022-12-02
      相关资源
      最近更新 更多