Для удобства мы должны сделать код коммивояжера, используя код геолокатора, из списка городов, которые нам не предоставлены, если первый город в списке - это начальный/конечный город.Код Python - индекс индекса вне диапазона?
Мой код неполный, но едва, поскольку я думаю, что все, что я оставил, - это расстояние от второго до последнего в начальный город.
В любом случае, я постоянно сталкиваюсь с проблемой «индекс индекса вне диапазона» при попытке взять расстояние между двумя городами в списке.
I Я сделал инструкцию if/else для всего, что могло вывести мои показатели за пределы диапазона, но я все равно получаю ошибку. Я достаточно новичок в Python, поэтому, пожалуйста, извините мою плохую структуру/синтаксис. Импорт, который у меня есть, является обязательным для этого проекта, поэтому еще раз, пожалуйста, не судите. Ошибка может быть действительно глупой и очевидной, но если это так, у меня проблемы с этим.
#!/usr/bin/env python
cityfile = open(sys.argv[1], "r")
citylistwithn = cityfile.readlines()
citylist = list(map(lambda each:each.strip('\n'), citylistwithn))
initcity = 0
def main():
p = 0
distancebetweencities = 1
totaldistance = 0
cityat = 0
while len(citylist) >= 1:
currentdistance = vincenty(citycoords(citylist[cityat]), citycoords(citylist[p])).miles
if currentdistance > distancebetweencities:
distancebetweencities = currentdistance
if int(p) < len(citylist)-1:
p += 1
else:
p = p
elif currentdistance < distancebetweencities:
distancebetweencities = distancebetweencities
if int(p) < len(citylist)-1:
p += 1
else:
p = p
elif currentdistance == distancebetweencities:
totaldistance += distancebetweencities
citylist.pop(int(cityat))
if int(p) >= 1:
cityat = int(p) - 1
else:
cityat = int(p)
print(totaldistance)
main()
Пожалуйста, помогите мне StackOverflow, ты моя единственная надежда
EDIT: Traceback, и вырезать некоторые ненужный код:
Traceback (most recent call last):
File "/home/user/assignment6.py", line 43, in <module>
main()
File "/home/user/assignment6.py", line 22, in main
currentdistance = vincenty(citycoords(citylist[cityat]), citycoords(citylist[p])).miles
IndexError: list index out of range
Пожалуйста, сократите свой код до [минимального примера] (http://stackoverflow.com/help/mcve) и обеспечите полную отслеживание ошибок. – jonrsharpe
Пожалуйста, сообщите нам (запустив в отладчике или просто добавляя кучу вызовов 'print'), что находится в' cityat', 'p' и' citylist', и убедитесь, что это один из двух непосредственных '[]' выражения в этом коде, а не одну из функций, которые вы вызываете, что создает исключение. – abarnert
Между тем, вы делаете 'int (p)' повсюду. Какой тип 'p'? Похоже, что это должно быть «int» в первую очередь, что означает, что эти вызовы не нужны. Но если они необходимы, то проблема, скорее всего, связана с любым типом 'p', может быть, с его методом' __index__' или чем-то еще. – abarnert