TypeError bei Python-Programm?

jo135  27.10.2023, 16:55

In welcher Zeile?

Edwardo23 
Fragesteller
 27.10.2023, 16:56

line 19, in calculate_tour

   tour = [int(places[0][0])] + [places[i][0] for i in perm] + [places[0][0]]

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
tour = [places[0][0]] + [places[i][0] for i in perm] + [places[0][0]]

Der eingegebene Datentyp ist falsch. In Zeile 19 ist perm ein Tuple, z. B. ('Rom', 'London', 'Paris') und i ein String in diesem Tuple, z. B. "London". Wie die Fehlermeldung sagt, kann der Array-Index nur eine Zahl (int) sein und nicht ein String.

Wie man dieses löst, hängt davon ab, was Du genau erreichen möchtest. Wenn tour nur eine Liste mit den einzelnen Punkten der Tour sein soll, würde es reichen, einfach das Tuple in eine Liste umwandeln:

tour = list(perm)
// z. B. ['Rom', 'London', 'Paris']
Edwardo23 
Fragesteller
 27.10.2023, 21:23

habe jetzt einfach perm = list() gesetzt und schaue wie weit ich damit komme, danke!

0

Ich kenne mich da leider nicht so gut aus, aber ich vermute, dass es sich um den folgenden Teil der Permutationen handelt:

total_distance += abs([x[1] for x in places if x[0] == tour[i]][0] - [x[1] for x in places if x[0] == tour[i + 1]][0])