3d Vektoraddition

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
dabafsdf
User
Beiträge: 4
Registriert: Freitag 17. Januar 2020, 12:44

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
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

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):
    ...
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

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.
Antworten