-4

わかりましたので、4 つの異なる都市を含むプログラムがあり、各都市には距離があります。プログラムは、計算したい都市をユーザーに尋ね、2 つの都市間の距離をマイルで返します。これで、ユーザーに都市 1 と都市 2 を入力するよう求める作業ループができました。完了すると、プログラムは 2 つの都市間の距離を返します。ただし、同じことを試みましたが、ユーザーに 3 つの異なる都市を選択してから、3 つの都市間の距離を返すように求めました。コードは文字通り同じですが、「int オブジェクトは添字可能ではありません」が返されることを除いては同じです。

最初に、質問を 2 回ループしてテキストを出力するコードを貼り付けます。次に、3 回ループするように変更した場所を貼り付け、3 つの都市の距離をマイルで出力しようとします。

私の都市と距離コード

cities=["Coventry", "Birmingham", "Wolverhampton", "Leicester"]
distances=[
    [0,25,33,24],
    [25,0,17,42],
    [33,17,0,54],
    [24,42,54,0]]

ワーキング 2 都市コード

def distancestwo():
    choices=[0,1] 
    for j in range(2): #This will loop twice, hence giving the option for two cities. More could be added!
        for i in range(len(cities)):
            p.write ("%d : %s\n" %(i, cities[i]))
        p.write("\nEnter city number %d: \n"%(j+1))
        choices[j]=p.nextInt()

    p.write("\n") #Leaves a line for the output of the distance



    p.write("The distance between %s and %s is \n%d miles!\n"\
         % (cities[choices[0]], cities [choices[1]],distances [choices[0]] [choices[1]]))

ただし、これは in オブジェクトが添字可能ではないことを返します

def distancesthree():
    choices=[0,1,2] 
    for j in range(3): #This will loop three times 
        for i in range(len(cities)):
            p.write ("%d : %s\n" %(i, cities[i]))
        p.write("\nEnter city number %d: \n"%(j+1))
        choices[j]=p.nextInt()

    p.write("\n") #Leaves a line for the output of the distance



    p.write("The distance between %s ,%s and %s is \n %d miles!\n"\
             % (cities[choices[0]], cities [choices[1]], cities [choices[2]],distances [choices[0]] [choices[1]] [choices[2]]))
4

2 に答える 2

1

発生するエラーは、次の部分が原因です。

distances [choices[0]] [choices[1]] [choices[2]]

distances都市間の距離を含むリストのリストであるため、2 つの都市のコードが機能するためdistances[choices[0]][choices[1]]、最初に選択した都市の距離リストを選択し、次に 2 番目の都市のエントリを選択します。

dist_list = distances[choices[0]] #list of distances
distance_in_miles = dist_list[choices[1]]  #entry for the selected city

したがって、新しいコードでは、次のことを試みます。

result = distance_in_miles[choices[2]]

もちろん、インデックスを作成しようとしているのは数字であり、リストや辞書などではないため、これは機能しません.

さらに、あなたがやろうとしていることは、3点間の距離など存在しないため、意味を成し始めていません。都市 1 から都市 2、都市 3 までの距離、またはこれらの順列を計算したり、これら 3 つの都市を訪れる最短経路を検索したりできますが、「距離」を尋ねるだけでは意味がありません。

于 2013-08-06T11:21:57.073 に答える