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].
1つ目はx座標で、2番目はy座標です。
2行の位置をテストする手順があります。次に、この手順とこの1つのアルゴリズムを組み合わせる必要があります。
私が持っているのは、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をfindindします ライン 簡単に言えば、それらを分離してmax()関数をそれらに適用できるようにする必要があります。幸いなことに、Pythonリストのインデックス作成はステップサイズをサポートするため、他のすべての値を簡単に引き出すことができます。
xvals=riadok[3::2]
yvals=riadok[4::2]
xmax=max(xvals)
ymax=max(yvals)
で最大を見つける ファイル 少し難しい:各行ごとに、これまでに見つかった最大の数値とローカルの最大値を比較し、より大きい場合は前者に置き換えることができます。
xtruemax=max(xtruemax,xmax)
ytruemax=max(ytruemax,ymax)
しかし、ファイルをさらに進むにつれて、これらの数字がゆっくりと成長していることがわかります。ライン1からすぐに利用可能なxとyの真の最大値を必要とする場合は、2つのパスでファイルを処理する必要があります。1回は最大xとyを見つけ、1回はアルゴリズムを適用する必要があります。
他のヒント
強力なコードが好きなら、これを希望する:)整数番号を持っている場合は、intでフロートを置き換えることができます。
file.txt1 2 3 900000.029384 10000 6 8 900000.029383
最大= max(map(float、(open( 'file.txt'、 'r')。readline())。split())))))