This is an old revision of the document!
Einheit 3: Einfachere Wegfindungsalgorithmen
Wir arbeiten weiterhin im Verzeichnis labyrinth, wo auch die Dateien laby.py und zelle.py zu finden sind.
Aufgabe 3
- Speicher Sie folgendes Programm als
aufgabe3.pyim Verzeichnislabyrinth:
- aufgabe3.py
from laby import Laby l = Laby(4,4) # Aktuelle Zelle, bzw. Start-Zelle aktuell = l[0,0] # Zelle mit S markieren aktuell.mark = "S" print(l) while True: # Endlosschleife fertig = True for dir in range(4): # Alle Richtungen probieren nb = aktuell.nachbar(dir) # Nachbar in diese Richtung (oder None, wenn es diesen nicht gibt) if nb!=None and nb.mark==" ": # Noch keine Markierung? aktuell.zustand(dir, True) # Wand öffnen aktuell = nb # weiter gehen aktuell.mark = "." # Zelle markieren print(l) fertig = False break # for-Schleife beenden if fertig: break # while-Schleife beenden
- Führen Sie es aus
- Studieren und verstehen Sie das Programm.
- Können Sie die einzelnen Schritte nachvollziehen und erklären, warum das entstehende Labyrinth so aussieht wie es aussieht?
Aufgabe 4
- Im Programm
aufgabe3.py, kommentieren Sie die letzte Zeile mit dembreakaus. - Können Sie das Resultat vorraussagen?
- Führen Sie das Programm aus. Können Sie das Resultat erklären?
Aufgabe 5
- Im Programm
aufgabe3.py, stellen Sie die letzte Zeile mit dembreakwieder her. - Fügen Sie folgende Zeile unmittelbar vor der while Schlaufe ein:
dirs = [0,2,1,3]
- Ersetzen Sie dann in der for-Schleife den
range(4)durchdirs. - Können Sie das Resultat vorraussagen?
- Führen Sie das Programm aus. Können Sie das Resultat erklären?
Aufgabe 6
- Immer noch im Programm
aufgabe3.py, fügen Sie folgende Zeile als zweite Zeile in der Datei ein:
from random import shuffle
- Fügen Sie dann folgende Zeile unmittelbar vor der for-Schleife ein, und achten Sie auf korrekte Einrückung:
shuffle(dirs)
- Führen Sie das Programm mehrfach aus und erklären Sie das Resultat. Und die
shuffle-Funktion macht genau das, was ihr Name sagt.