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]
, Полигон имеет 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.txt1 2 3 900000.029384 10000 6 8 900000.029383
maximum = max (map (float, (open ('file.txt', 'r'). readline ()). split ()))