Python frage über Integer und Lists?

2 Antworten

Das sieht man am Besten, wenn man das Beispiel mal durchgeht:

i ist die Position in der Liste, die gerade abgearbeitet wird. Am Anfang ist i = 0. Also guckt sich das Programm die Anweisung an der Position 0 an. Die Anweisung ist 1, was in diesem Fall Addition bedeutet.

Dann kommt das, was du fragst. Das Programm schaut sich die Position i+1 an. Da steht eine 12. Jetzt nimmt sich das Programm die Zahl, die an der Position 12 steht (das ist das, was opcode[opcode[i+1]] bedeutet. Es wird also nicht mit der 12 gerechnet, die an Position i+1 steht, sondern es wird mit der Zahl an der Position 12 gerechnet), nimmt sich die Zahl, die an der Position steht, die von der Position i+2 indiziert wird (das ist in diesem Fall dieselbe Zahl, weil da eine 2 steht), addiert die beiden zusammen und schreibt sie an die Position, die von der Zahl an Position i+3 indiziert wird (was hier auch wieder dieselbe Zahl ist, weil an Position 3 eine 3 steht).

Das macht das Programm dann in einer Endlosschleife, weil i nirgendwo verändert wird.

StrikeZz1721 
Fragesteller
 20.10.2023, 10:34

Vielen dank, hab das jetzt auch abgeändert damit es nicht in einer Endlosschleife bleibt.

0
wieso wird es "opcode[opcode[i+1]]" geschrieben und kann nicht "opcode[i+1]" geschriebe werden

Weil das zwei verschiedene Dinge sind. Lös es einfach von innen nach außen auf, hier passiert nichts magisch.

opcode[opcode[i+1]]

Das Listenelement auf jener Position, die im Listenelement auf Position i+1 zu finden ist.

opcode[i+1]

Das Listenelement auf Position i+1.

Hier wird eine extrem einfache Sprache bzw. ein Automat simuliert. Auf Opcodes folgen offenbar "Adressen" innerhalb der Liste, die verwendet werden sollen.