Python: найти максимальное x-значение и максимальное значение y в текстовом файле

StackOverflow https://stackoverflow.com/questions/8359207

Вопрос

У меня есть вопрос о поиске максимального 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], а затем я проверю положение этих линий, и это необходимо в точке алгоритма многоугольника, где будет Подсчитал точки пересечения. (пересечение между созданной линией, содержащей точку, и каждая линия многоугольника)

Это было полезно?

Решение

Найдите максимальный 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 и один раз, чтобы применить ваш алгоритм.

Другие советы

Если вам нравится мощный код, вам бы хотелось :) Если у вас просто есть целочисленные номера, вы можете заменить плавание на int.

file.txt

1 2 3 900000.029384 10000 6 8 900000.029383

maximum = max (map (float, (open ('file.txt', 'r'). readline ()). split ()))

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top