Inhaltsverzeichnis

Variablen & Ausgabe

Lies den folgenden Python-Code bevor du ihn ausführst! Was wird passieren?

Verändere den Code anschliessend, um die Ausgabe zu verändern!

TTTTTTTTTTT T> LLL L T TTTTTTTTTTT count = 0 while not kara.treeFront(): if kara.onLeaf(): count = count + 1 kara.move() print(count, 'Blätter')

Variablen

Variablen sind benannte Speicherbereiche, in denen ein Wert gespeichert wird. Stell dir Variablen vor wie Schubladen, die mit ihrem Namen angeschrieben sind. Werte haben einen Typ (z.B. Zahl oder Text).

Im Beispiel:

Variablennamen

Typen

Jeder Python-Ausdruck (und damit jede Variable und jeder Wert) hat einen Typ:

Ausgabe

Mit print(count, 'Blätter') werden zwei Werte auf der Konsole ausgegeben werden. Als Argumente für print können wir Variablen (count), Werte ('Blätter') oder komplexere Ausdrücke (count + 1) angeben.

Aufgabe E1: Blätter-Prozente

Erweitere den Code des obigen Beispiels und zähle zusätzlich zur Anzahl Blätter auch die Anzahl Felder. Du benötigst zusätzlich zu count eine zweite Variable, um die Felder zu zählen. Du könntest sie beispielsweise squares nennen.

Gib am Schluss den Prozentsatz der Felder aus, die ein Blatt enthalten. Nutze dafür Division (/) und Multiplikation (*)! Was ist der Typ des Resultats?

TTTTTTTTTTT T> LL L T TTTTTTTTTTT count = 0 while not kara.treeFront(): if kara.onLeaf(): count = count + 1 kara.move() print(count, 'Blätter') count = 0 squares = 1 # Start with one to not miss the last square. while not kara.treeFront(): squares = squares + 1 if kara.onLeaf(): count = count + 1 kara.move() percent = count / squares * 100 print(percent, '% Blätter') assert "33.3" in output_lines()[-1], "33.3% der Zellen enthalten ein Blatt"

Aufgabe E2: Blätter zählen

Schreibe Python Code wie folgt:

TTTTTTTTTTT T>L L L L T TTTTTTTTTLT TLLL LLT T TLTTTTTLTLT TLTL MTLTLT TLTLTTTLTLT TLT TLT TLTTTTTTTLT TLLLLLLLLLT TTTTTTTTTTT count = 0 while not kara.mushroomFront(): if kara.treeFront(): print('turning!') kara.turnRight() if kara.onLeaf(): count = count + 1 print(count, 'leaves') kara.removeLeaf() kara.move() print('done!') assert "34" in output_lines()[-2] assert output_lines()[-1] == 'done!' assert world_leaves() == 0, "Alle Blätter müssen aufgenommen werden!"

Aufgabe E3: Tunnellänge messen

Schreibe Python-Code, um die Länge des Tunnels zu messen. Ein Tunnel ist definiert als eine gerade Strecke, bei der links und rechts ein Baum steht. Am Ende eines Tunnels wird die Länge auf der Konsole ausgegeben. Kara stoppt, wenn Sie auf einen Baum trifft.

Tipps:

TTTTTTTTTTTTTTTTTTTTT T T T TTT TTTTTT TTT T> T T TTTTTTTTTTT T T T TTTTTTTTTTTTTTTTTTTTT length = 0 while not kara.treeFront(): if kara.treeLeft() and kara.treeRight(): length = length + 1 kara.putLeaf() # optional kara.move() print(length) assert "6" in output_lines()[-1]

Aufgabe E4: Alternierende Logik

Kara soll entweder Blätter sammeln oder Blätter legen. Der Modus wechselt jedes Mal, wenn Kara bei einem Baum wendet. Die Ecke gehört bereits zum neuen Modus.

Verwende dafür eine Variable des Typs Boolean: collecting = True. Ist die Variable True, werden Blätter gesammelt, andernfalls abgelegt. Bei einer Wende kann die Variable in ihr Gegenteil verkehrt werden: collecting = not collecting

TTTTTTTTTTT T>L L L L T TTTTTTTTTLT TLLL LLT T TLTTTTTLTLT T TL MTLTLT T TLTTTLTLT TLT TLT TLTTTTTTTLT TLLL LL T TTTTTTTTTTT collecting = True while not kara.mushroomFront(): if kara.treeFront(): kara.turnRight() collecting = not collecting if collecting and kara.onLeaf(): kara.removeLeaf() if not collecting and not kara.onLeaf(): kara.putLeaf() kara.move() assert 20 == world_leaves(), f"Erwartete 20 Blätter, aber es hatte {world_leaves()}"