-2

サンプルデータ ( towers1.txt):

MS33 42.19 -70.33 3.6
JS89 42.23 -70.30 3.9
ED22 42.25 -70.33 3.4
HE90 42.27 -70.35 3.7
TW05 42.30 -70.30 3.4
WW23 42.37 -70.28 3.7

コード:

lr = []

import lat_long_to_dist
f = open('towers1.txt','r')   
towers = [line.strip('\n') for line in f]
for line in towers:
     lr.append(line.split())

2 つの for ループのみ(辞書以上は学習していません) を使用して、最初の for ループをタワー自体に使用し、次に 2 番目の for ループを最初に選択したものを除くすべてのタワーに使用する方法を見つけようとしています。ループ。私が持っているファイルから以下の式のみを使用してlat.pyいます(これは編集できません)。私のコードの行は読む必要があります

lat.distance_from_lat_long( lat1, long1, lat2, long2 )

したがって、最初の for ループから lat1 と long1 が必要です。これは、2 番目の for ループで他のすべてのタワーの lat2 と long2 を読み取るまで同じままで、2 番目のタワーが最初の for ループなどに移動します。 2 つの塔の間の距離を教えてくれます。

ネストされた for ループから、行からの lr[3] の最小値が 2 つの塔の距離よりも小さい場合、塔は機能します (count=+1)。最初の for ループで塔の名前を返します。 2番目のタワーと同じように、他のタワーと連携できるか、どのタワーが連携できるかなど。少し混乱しています。誰かが助けてくれるかどうか疑問に思っていますか?

これが役立つかどうかはわかりませんが、何時間も試してみましたが、何も思いつきません. ここに私のコードがありますが、それはとても悪いので、誰かが助けることができますか?

def Tower_Dist_From_Eachother(t,count):  
    for i in range(count):
        for j in range(count):
            lats = 0
            longs = 0              
            tdist = lat.distance_from_lat_long(lats, longs, float(lr[j][1]), float(lr[j][2]))

def towers(l):
    towname = []
    for i in range(count):
        towname.append(at[i][0])

for i in range(count):
    lats += float(lr[i][1])
    longs += float(lr[i][2])
4

1 に答える 1

1

この部分が本当の問題だと思います:

そのため、2 つの for ループのみを使用して (辞書以上は学習していません)、最初の for ループをタワー自体に使用し、次に 2 番目の for ループを最初のループで選択されたものを除くすべてのタワーに使用する方法を見つけようとしています。 .

では、 を除くすべてのタワーをループしたいと思いますよiね? これを行う簡単な方法は、すべてのタワーをループしてスキップすることiです。例えば:

for i in towers:
    for j in towers:
        if j == i:
            continue
        # do stuff with i and j

または、同等に:

for i in towers:
    for j in towers:
        if j != i:
            # do stuff with i and j
于 2013-08-05T22:53:40.300 に答える