一千萬個為什麽

搜索

Python:在文本文件中查找最大x值和最大y值

我有關於在文本文件中找到最大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] ,polygon有 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]然後我將測試這些行的位置,這在多邊形算法中是必要的,其中將是計算交點。(包含點和多邊形線的創建線之間的交點)

最佳答案

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,一次應用你的算法。

轉載註明原文: Python:在文本文件中查找最大x值和最大y值