2016-11-21 11 views
0

Ich habe eine kurze Liste mit Koordinaten: (0 | 0) (10 | 0) (10 | 10) (0 | 10). Ich versuche, diese Koordinaten zu verwenden, um die Fläche des Quadrats zu berechnen, das sie bauen. for-Schleife sollte 4 Mal ausgeführt werden und die unten geschriebene Mathematik ausführen. , wenn ich laufen die folgende Fehler im Bereich = .... Leitung:Verwenden von Werten aus Listen in einer Gleichung/Schleife

Typeerror: ‚int‘ Objekt ist nicht subscriptable

list = [[0,10,10,0],[0,0,10,10]] 

def gaussarea(coords): 
    area = 0 
    for coords in coords: 
     area = area + (coords[0][0] - coords[0][1]) * (coords[1][0]+coords[1][1]) 
    return area 

a = (gaussarea(list)) 
+0

Ihre Variablennamen machen dies unnötig verwirrend. Könnten Sie die ersten beiden Zeilen der Arithmetik schreiben, damit wir sehen können, was Sie tun wollen? zB 'area = area + (0 - 0) * (10 + 0)' –

+1

Ihr variabler Name 'list' steht in Konflikt mit dem' eingebauten' Typ [list] (https://docs.python.org /3/library/functions.html#func-list) – davedwards

Antwort

0

Sie versuchen, den Index eines int zuzugreifen, die ist sinnlos, da jede coords eine Liste ist, keine verschachtelte Liste.

Angenommen, Sie ein Rechteck erhalten (oder quadratisch) sicher, Sie sind gut genug, um mit

def gaussarea(coords): 
    area = (coords[0][1] - coords[0][0]) * (coord[1][2] - coords[1][1]) 
    return area 
0

der Wert cords[0] ist ein int. Daher versucht cords[0][0] in ein int zu indizieren, daher Ihr Fehler. Sie können die for-Schleife entfernen und Ihr Code sollte funktionieren.

Verwandte Themen