わかりましたので、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]]))