Seite 1 von 1

3d Vektoraddition

Verfasst: Sonntag 9. Februar 2020, 21:27
von dabafsdf
Hi, ich versuche gerade als Übung um Klassen zu verstehen ein Programm zu schreiben, bei dem eine Zahl jeweils zu der x, y und z koordinate eines Vektors dazuaddiert wird. Allerdings komme ich nicht mehr weiter ohne Hilfe.

Code: Alles auswählen

class Vektor:
    def __init__(self, x, y, z):
        self.hi = [x, y, z]
        
    def anzeigen(self):
        print(self.hi)
        
    def addieren(self, g):
        for i in self.hi:
            self.hi[i] = i + g
    
a = Vektor(1,2,4)

a.addieren(1)

a.anzeigen()
wenn ich das Programm starte kommt folgender Error den ich nicht verstehe:
list assignment index out of range.(bei line 10 also: self.hi = i+g )

Danke schon mal im voraus für die Hilfe

Re: 3d Vektoraddition

Verfasst: Sonntag 9. Februar 2020, 21:35
von __deets__
Du iterieren über die WERTE deines Vektors, probierst dann aber, eben diesen WERT als INDEX zu benutzen. Und ein Element an stelle 4 + 1 gibt’s ja nunmal nicht, und falsch wäre die ganze Nummer eh.

Das hier ist eine der wenigen Ausnahmen, wo die Verwendung eines Index angezeigt ist. Also zb

Code: Alles auswählen

for i, v in enumerate(self.hi):
    ...

Re: 3d Vektoraddition

Verfasst: Sonntag 9. Februar 2020, 22:32
von Sirius3
Dass Du den Wert als Index benutzt, hat __deets__ ja schon geschrieben.
Statt eine Liste zu verändern, erstellt man in Python einfach eine neue Liste:

Code: Alles auswählen

    def addieren(self, g):
        self.hi = [i + g for i in self.hi]
Das Addieren eines Skalars zu einem Vektor ist mathematisch eine seltsame Operation.