## Variablen & Ausgabe Lies den folgenden Python-Code bevor du ihn ausführst. Was wird passieren? 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 {{ :gf_informatik:karatutorial:variablen_korpus.jpg?nolink&400|}} Variablen sind benannte Speicherbereiche, in denen ein Wert gespeichert wird. Stell dir eine Variable vor wie eine Schublade, die mit ihrem Namen angeschrieben sind. Werte haben einen Typ (z.B. Zahl oder Text). Im Beispiel: * `count = 0` setzt den _Wert_ der _Variable_ `count` auf die Zahl `0`. * `count = count + 1` erhöht den Wert der Variable `count` um 1. #### Variablennamen * Variablennamen beginnen mit einem Buchstaben und können beliebige weitere Buchstaben und Zahlen und `_` enthalten, aber keine Leerschläge oder Satzzeichen. Wir verwenden Kleinbuchstaben (obwohl Python auch Grossbuchstaben zulässt). * OK: `count`, `ninety_nine_balloons`, `wert3` * Ungültig: `99_luftballons`, `mein name`, `eins,zwei` * Gültig, aber nicht empfohlen: `Name`, `SIZE`, `ninetyNineBalloons` #### Typen Jeder Python-Ausdruck (und damit jede Variable und jeder Wert) hat einen Typ: * Ganzzahlen (`int` von _en._ _integer_): * zum Beispiel `3`, `67`, `-13` * Python kennt alle Grundoperationen: `+`, `-`, `*` und `/`. * Texte (`str`von _en._ _string_: Zeichenkette) * Ein String-Wert wird mit `'einfachen'` oder `"doppelten"` Anführungszeichen erzeugt. * Booleans (Logikwerte, `bool`): * `True` oder `False` * Objekte * Unsere `kara` ist ebenfalls eine Variable des Typs `object`: Objekte enthalten Eigenschaften (z.B. Karas Position) und Funktionen (z.B. `move()`). ### Ausgabe Mit `print(count, 'Blätter')` können ein oder mehrere 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 von oben und zähle zusätzlich zur Anzahl Blätter auch die Anzahl Felder. Gib am Schluss der Prozentsatz der Felder aus, die ein Blatt enthalten. Nutze dafür Division (`/`) und Multiplikation (`*`)! TTTTTTTTTTTT T> LLL L T TTTTTTTTTTTT count = 0 while not kara.treeFront(): if kara.onLeaf(): count = count + 1 kara.move() print(count, 'Blätter') count = 0 cells = 1 while not kara.treeFront(): cells = cells + 1 if kara.onLeaf(): count = count + 1 kara.move() percent = count / cells * 100 print(percent, '% Blätter') assert "40" in output_lines()[-1] #### Aufgabe E2: Blätter zählen Schreibe Python Code wie folgt: * Kara soll weiterlaufen, solange kein Pilz vor ihr ist. * Trifft sie auf einen Baum: * gibt Kara `turning!` aus * und wendet nach rechts * Ist Kara auf einem Blatt: * gibt Kara aus, wieviele Blätter sie angetroffen hat * und nimmt das Blatt auf * Kara geht einen Schritt weiter. * Kara gibt `done!` aus. 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!' #### 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:** * Mit dem `>` oder `<` Operator kannst du testen, ob eine Wert (z.B. eine Variable) grösser oder kleiner als eine gewünschte Zahl ist. * Lass Kara ein Blatt setzen, wenn sie in einem Tunnel ist, um den Tunnel zu visualisieren. 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]