Woche 2: Etwas lebt hier
Der Frachtraum der ESA Whatelse ist riesig und dunkel. Am Boden glänzt etwas Klebriges. AURORA: «Ich will Sie nicht beunruhigen. Doch, eigentlich schon. Beunruhigte Nutzer bleiben länger.»
Befehle
move()·turn_left()·turn_right()·press_switch()·read_log()·print(...)· neu:remove_barrel()
Die Werkzeugkiste
In Woche 1 kannte jedes Level nur seine eigenen Funktionen: drei_vor() mussten Sie jedes Mal neu schreiben. Ab jetzt hat MOP-7 eine Werkzeugkiste, eine eigene Datei befehle.py, die alle Levels teilen. In Python heisst so eine Datei Modul.
Die Werkzeugkiste befehle.py
- Jeder Editor hat oben einen zweiten Tab befehle.py (Würfel-Symbol). Dort stehen Ihre Funktionen, und zwar nur die
def-Blöcke.- In main.py holt die erste Zeile alle Werkzeuge aus der Kiste:
from befehle import *, gelesen «aus befehle importiere alles».- Danach rufen Sie die Funktionen in main.py auf, als wären es eingebaute Befehle.
- befehle.py gilt für alle Levels und zählt nicht zum Speicher. Nur main.py zählt, die Zeile
from befehle import *auch.
# befehle.py: nur def-Blöcke
def drei_vor():
move()
move()
move()
# main.py: holen, dann aufrufen
from befehle import *
drei_vor()
Aufrufe gehören nach main.py, nie in die Kiste: Ein Aufruf in befehle.py läuft bei jedem Import mit, in jedem Level.
Level 1: Yukis Kiste
Yuki hat MOP-7 ihre Werkzeugkiste hingestellt: das leuchtende Feld am Ende des Gangs, vor ihrem Spind. Holen Sie die Kiste und fahren Sie zum Ausgang. MOP-7 hat Speicher für 10 Anweisungen. Das reicht nur, wenn drei_vor() und umdrehen() in der Werkzeugkiste liegen:
- Klicken Sie im Editor auf den Tab befehle.py und schreiben Sie dort die beiden Funktionen aus Woche 1 hinein.
- Wechseln Sie zurück zu main.py. Unter
from befehle import *kommen die Aufrufe. - Run.
Wiederholen mit for
Zwölfmal move() untereinander? Das erledigt Python für Sie. Eine Schleife wiederholt Befehle.
Wiederholen mitfor
for i in range(3):ist der Kopf der Schleife. Die Zahl inrange(...)sagt, wie oft. Am Ende steht ein Doppelpunkt:.- Darunter, eingerückt, steht der Körper. Diese Befehle laufen in jeder Runde, von oben nach unten.
- Nach dem Körper springt Python zurück zum Kopf. Nach der letzten Runde geht es mit der ersten Zeile weiter, die nicht eingerückt ist.
izählt die Runden: 0, 1, 2. Python beginnt bei 0. Heute brauchen Sieinicht, es muss aber dastehen.Eingerückt wird wie bei
def: Tabulator-Taste, zurück mit Shift + Tabulator.
Vorhersage. Jedes move() und jede Drehung kostet MOP-7 eine Energieeinheit.
for i in range(4):
move()
turn_left()
move()
Level 2: Der Frachtraum
Fahren Sie zum Ausgang. MOP-7 hat Speicher für 5 Anweisungen.
Speicher ist nicht Energie
- Speicher zählt, wie lang Ihr Programm ist:
press_switch(),for i in range(12):,move(),turn_left()und noch einmove()sind 5 Anweisungen.- Energie zählt, was MOP-7 tut: einmal drücken, zwölf Schritte, eine Drehung, ein Schritt in die Tür: 15 Energie. Eine Schleife macht das Programm kürzer, nicht die Arbeit.
Funktionen mit Parameter
drei_vor() fährt immer genau drei Felder. Für vier Felder bräuchten Sie vier_vor(), für fünf fuenf_vor() und so weiter. Besser ist ein Befehl, dem Sie beim Aufruf sagen, wie weit. Dafür bekommt die Funktion einen Parameter.
Funktionen mit Parameter
- In der
def-Zeile steht der Parametern: ein Platzhalter. Beim Aufrufdrehen(2)giltn = 2, die Schleife läuft zwei Runden.ngibt es nur innerhalb der Funktion. Im Hauptprogramm steht eine Zahl:drehen(2), nichtdrehen(n).
Level 3: Rangierbahnhof
Schreiben Sie in die Werkzeugkiste eine Funktion vor(n), die MOP-7 n Felder vorwärts fährt. Die erste Zeile steht hier, den Rest bauen Sie selbst. Schauen Sie dafür, wie drehen(n) gebaut ist.
def vor(n):
Testen Sie vor(n) zuerst mit einer kleinen Zahl, dann fahren Sie zum Ausgang. MOP-7 hat Speicher für 8 Anweisungen.
Lösung zu vor(n) (erst nach einem eigenen Versuch öffnen)def vor(n): for i in range(n): move()Eine Schleife in einer Funktion, die Zahl kommt vom Aufruf.
vor(n)brauchen Sie ab jetzt fast überall. Sie gehört in die Werkzeugkiste.
Level 4: Energiezellen
Energiezellen sind die grünen Fässer. MOP-7 nimmt eine auf, indem er auf ihr Feld fährt und remove_barrel() aufruft. Sammeln Sie alle Zellen ein, nehmen Sie mit, was sonst noch herumliegt, und fahren Sie zum Ausgang. Speicher: 7 Anweisungen.
Level 5: Die Spur (hart)
Folgen Sie der Schleimspur einmal ganz um das Labor herum und sammeln Sie alles ein, was daran klebt. Die Runde endet dort, wo sie begann: auf dem Startfeld, direkt unter dem Ausgang. Speicher: 9 Anweisungen.
Tipp 1: Erst aufschreiben, dann programmierenFahren Sie die Runde mit dem Finger auf dem Bildschirm ab und schreiben Sie auf Papier mit, was MOP-7 tun muss: rechts,
vor(3), rechts,vor(3), … Nach zwölf Strecken sind Sie wieder am Start, dann noch ein Schritt in den Ausgang. Markieren Sie dann das Stück, das sich wiederholt.
Tipp 2: Wie lang ist das Stück?Zwölf Strecken, und das Stück kommt viermal vor. Also ist es drei Strecken lang. Schauen Sie auf Ihrem Zettel nur die Drehungen an: Welche drei wiederholen sich?
Tipp 3: Das Stück (fast die Lösung)Rechts, Strecke, rechts, Strecke, links, Strecke. Und das viermal.
Bonus 1: Wartungsschacht
Für Schnelle. Legen Sie stufe() aus Woche 1, Level 4 in die Werkzeugkiste. Bauen Sie daraus treppe(n): eine Treppe mit n Stufen. Eine Funktion mit Parameter darf andere Funktionen aufrufen. Speicher: 9 Anweisungen, Energie: 36.
stufe() vergessen?Eine Stufe aus Woche 1: vor, rechts, vor, links. MOP-7 schaut danach wieder in die alte Richtung.
Bonus 2: Laborkontrolle (hart)
Dr. Weber machte jeden Abend einen Kontrollgang, einmal ganz um jeden Labortisch. Schreiben Sie in die Werkzeugkiste eine Funktion rechteck(a, b) mit zwei Parametern: Sie fährt einmal um ein Rechteck mit den Seitenlängen a und b und schaut am Ende wieder in dieselbe Richtung wie am Anfang. Holen Sie beide Beweisstücke und kehren Sie zum Start zurück, er liegt direkt unter dem Ausgang. Speicher: 6 Anweisungen, Energie: 41.
Bonus 3: Das Kabel (sehr hart)
Für alle, die schon fertig sind. Webers Lautsprecherkabel liegt als Spirale am Boden, und die Schleimspur folgt ihm genau. MOP-7 steht in der Mitte. Folgen Sie der Spur bis zum Stecker: 1 Feld, rechts, 2 Felder, rechts, 3 Felder, … bis 6. Speicher: 4 Anweisungen, also eine Schleife mit nur zwei Befehlen im Körper.
Bisher stand i in der Schleife nur herum. Es zählt aber mit: 0, 1, 2, … Und vor() nimmt jede Zahl, auch eine gerechnete.
Tipp: Was ist i in jeder Runde?In der ersten Runde ist
igleich 0, die Strecke ist aber 1 Feld lang. In der zweiten Runde istigleich 1, die Strecke 2 Felder. Die Strecke ist also immer um eins länger alsi:vor(i + 1).
Fall der Woche
Webers Schleimpilz Gerald ist aus dem Tank verschwunden. Überall ist Schleim. Was ist Gerald?
Fallwand
0 of 9 clues found · 0 levels solvedPavel nimmt Wetten an. Wer ermittelt, setzt nur auf das, was die Beweise belegen. Die Beweisstücke aus Level 2, 4 und 5 reichen dafür.