Wieso funktioniert der Code nicht?

1 Antwort

Ihr Code hat einige Fehler. Ich werde versuchen, diese Schritt für Schritt zu erklären:

1. Die Funktion `mod(i)` macht nichts. Sie ändert den Wert von `i` nicht wirklich, da in Python, wenn Sie `i*(-1)` und dann `i` schreiben, der Wert von `i` nicht tatsächlich geändert wird, da er nicht zugewiesen wird. Diese Funktion scheint in Ihrem Code nicht verwendet zu werden und kann entfernt werden.

2. Sie verwenden eine Variable namens `cel2` als Kopie von `cels`, aber in Python werden Listen standardmäßig durch Referenz und nicht durch Wert kopiert. Wenn Sie also `cel2 = cels` schreiben, verweisen `cel2` und `cels` auf dieselbe Liste. Das bedeutet, dass wenn Sie etwas in `cel2` ändern, es sich auch in `cels` ändert. Wenn Sie eine Kopie der Liste `cels` erstellen möchten, verwenden Sie die `copy.deepcopy()` Funktion aus dem `copy` Modul.

3. Die Funktion `ontimer(None,3000)` am Ende Ihres Codes macht nichts. Die `ontimer` Funktion erfordert eine Funktion, die nach einer bestimmten Zeit ausgeführt wird. Sie haben jedoch `None` anstelle einer Funktion bereitgestellt. Wenn Sie eine Verzögerung wünschen, können Sie stattdessen `time.sleep(3)` verwenden.

4. Sie haben das grundlegende Regelwerk von Conways Game of Life nicht korrekt implementiert. Eine Zelle, die "lebt" (True), stirbt, wenn sie weniger als 2 oder mehr als 3 lebende Nachbarn hat. Eine tote Zelle (False) wird zum Leben erweckt, wenn sie genau 3 lebende Nachbarn hat. In Ihrem Code haben Sie den Teil übersehen, der tote Zellen zum Leben erweckt. Sie müssen Ihre Bedingungen wie folgt korrigieren:

`      if cels[j][i]:


        if count > 3 or count < 2:


          cel2[j][i] = False


      else:


        if count == 3:


          cel2[j][i] = True


5. Zuletzt ist die Reihenfolge, in der Sie das Brett zeichnen und dann aktualisieren, umgekehrt. Sie sollten zuerst das Brett aktualisieren und dann zeichnen.

Mit diesen Änderungen sollte Ihr Code funktionieren. Beachten Sie jedoch, dass das Zeichnen mit der Python-Turtle-Bibliothek ziemlich langsam ist und dies die Ausführungsgeschwindigkeit Ihres Programms erheblich beeinflussen kann. Sie sollten vielleicht eine Bibliothek wie Pygame oder sogar ein spezielles Modul wie Pygame's Game of Life Modul in Betracht ziehen, wenn Sie nach einer schnelleren Implementierung suchen.