Skip to content

Commit ea757f1

Browse files
committed
feat: Add basic contents to sections on math, control flow and file types
1 parent a21247a commit ea757f1

12 files changed

Lines changed: 1164 additions & 29 deletions

000-Einleitung/Einleitung.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ numbering:
99

1010
# Einleitung
1111

12-
```{caution} 🎓 Lernziele:w
12+
```{seealso} 🎓 Lernziele
1313
:icon: false
1414
Nach lesen der Einleitung …
1515
1. … kennen Sie die Inhalte des Kurses.

020-Projekt_Taschenrechner/000-Einleitung.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,11 @@ numbering:
33
heading_1: true
44
heading_2: true
55
title: true
6-
figure:
7-
template: Abb. %s
86
---
97

108
# Projekt: Python als Taschenrechner
119

12-
```{caution} 🎓 Lernziele
10+
```{seealso} 🎓 Lernziele
1311
:icon: false
1412
1513
In diesem Kapitel erlernen Sie, …

020-Projekt_Taschenrechner/010-Python_REPL.ipynb

Lines changed: 77 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
"\n",
5656
"## Ihr erstes Python\n",
5757
"\n",
58-
"Die REPL verhält sich ähnlich zum Terminal, nur dass nicht Befehle nach (typischerweise) einem `$ ` eingegeben werden, sondern dass Python-Code nach einem `>>> ` eingegeben wird.\n",
58+
"Die REPL verhält sich ähnlich zum Terminal, nur dass nicht Befehle nach (typischerweise) einem \"`$ `\" eingegeben werden, sondern dass Python-Code nach einem \"`>>> `\" eingegeben wird.\n",
5959
"\n",
6060
"Nachfolgend finden Sie ein paar Beispiele. Probieren Sie diese selbst aus und ändern Sie sie dann ab.\n",
6161
"\n",
@@ -118,7 +118,7 @@
118118
"L -->|no| stop((Stop))\n",
119119
"```\n",
120120
"\n",
121-
"Ablaufdiagramm der Bestandteile einer REPL\n",
121+
"Zustandsdiagramm der Bestandteile einer REPL\n",
122122
"::::"
123123
]
124124
},
@@ -133,7 +133,22 @@
133133
"tags": []
134134
},
135135
"source": [
136-
"TODO: genauere Erklärung des Ablaufs von bspw. `print(\"Hallo\")`."
136+
"Betrachten wir den Ablauf folgendes Szenarios:\n",
137+
"\n",
138+
"1. Sie starten den Python-Interpreter mit\n",
139+
" ```bash\n",
140+
" $ python3\n",
141+
" ```\n",
142+
"2. Python startet, gibt die Versionsinformationen aus und zeigt Ihnen mit dem Prompt `>>> ` an, dass es zum Einlesen eines Python-Ausdrucks bereit ist. Die REPL ist nun im Zustand _Read_.\n",
143+
"3. Sie können nun einen Python-Ausdruck eingeben. Dieser kann `print(\"Hallo\")` sein oder aber auch\n",
144+
" ```\n",
145+
" >>> print(\n",
146+
" ... \"Hallo\"\n",
147+
" ... )\n",
148+
" ```\n",
149+
" Während Sie den Ausdruck eingeben bleibt die REPL im Status _Read_. Haben Sie einen vollständigen Ausdruck eingegeben (Wann ein Ausdruck \"vollständig\" ist lernen Sie später.) und drücken Sie dann die Eingabetaste, so wechselt die REPL in den Zustand _Eval_.\n",
150+
"4. Bei der Evaluation des Python-Ausdrucks versucht der Interpreter, den Code auszuführen. Ist er korrekt (und bezieht sich nur auf Namen(/Variablen), die bereits definiert wurden), so wird der Code ausgeführt. Nachdem der Code ausgeführt wurde wechselt die REPL in den Zustand _Print_ und es wird das **Ergebnis** des gerade ausgeführten Python-Codes gedruckt.\n",
151+
"5. Dann wird in den Zustand _Loop_ gewechselt und überprüft, ob eine Abbruchbedingung erreicht wurde. Ist dies nicht der Fall – soll also wieder von Anfang begonnen werden so wechselt die REPL zurück in den Zustand _Read_ und der Ablauf springt damit zu Schritt 2. Soll die Schleife nicht fortgesetzt werden, so geht die REPL über in den Zustand _Stop_ und der Python-Interpreter wird beendet."
137152
]
138153
},
139154
{
@@ -150,6 +165,65 @@
150165
"## Lernstandskontrolle"
151166
]
152167
},
168+
{
169+
"cell_type": "markdown",
170+
"id": "73fd1516-282e-41c7-a42f-815d983841dd",
171+
"metadata": {},
172+
"source": [
173+
"**Nachvollziehen der Zustände der REPL**\n",
174+
"::::{admonition} 💪 Übung\n",
175+
":icon: false\n",
176+
"Nachvollziehen Sie die nachfolgende REPL-Interaktion. Was sind Ausgaben per `print` und was sind Ausgaben durch den Zustand _Print_ der REPL?\n",
177+
"\n",
178+
"```python-repl\n",
179+
">>> hallo = \"Hallo Python-Lernende\" # 1\n",
180+
">>> hallo # 2\n",
181+
"'Hallo Python-Lernende' # 3\n",
182+
">>> print(hallo) # 4\n",
183+
"Hallo Python-Lernende # 5\n",
184+
">>> print(\"Hallo Python-Lernende\") # 6\n",
185+
"Hallo Python-Lernende # 7\n",
186+
">>> \n",
187+
"```\n",
188+
"\n",
189+
":::{dropdown} ✅ Lösung\n",
190+
"_**zu 1:**_ Hier wird eine Variable mit dem Namen `hallo` erzeugt in der das String-Literal `\"Hallo Python-Lernende\"` gespeichert wird. Dieser Ausdruck hat kein Ergebnis, weshalb nach der Zeile sofort der Prompt für die nächste Eingabe angezeigt wird.\n",
191+
"\n",
192+
"_**zu 2:**_ Hier besteht der Python-Ausdruck nur aus der Variablen mit dem Namen `hallo`. Eine Variable hat ihren Wert als Ergebnis, weshalb im Zustand _Print_ der REPL das String-Literat `'Hallo Python-Lernende'` ausgegeben wird (siehe _**3**_).\n",
193+
"\n",
194+
"Beachten Sie, dass in Python Strings entweder mit `'` oder mit `\"` umschlossen werden können. Sie sind gleichwertig und die Verwendung ist nur relevant, wenn der String selbst ein `'` oder ein `\"` enthält. Der String `\"Wie geht's?\"` müssten mit einfachen Anführungszeichen mit Hilfe eines sog. Escape-Zeichens geschrieben werden: `'Wie geht\\'s?'`. Anders herum wäre es bei diesem String: `\"Sie sagte: \\\"Hallo.\\\"\"` bzw. `'Sie sagte: \"Hallo.\"'`.\n",
195+
"\n",
196+
"_**zu 4:**_ Hier wird die Funktion `print()` genutzt um den Wert der Variablen `hallo` zu drucken. Dies geschieht im Zustand _Eval_ und die Ausgabe dazu ist in _**5**_ zu sehen. Die Funktion `print()` hat selbst kein Ergebnis, weshalb nichts zusätzliches durch den Zustand _Print_ ausgegeben wird.\n",
197+
"\n",
198+
"_**zu 6:**_ In diesem Schritt wird wie beim ersten Beispiel die Funktion `print()` mit einem String-Literal genutzt. Die Ausgabe in _**7**_ ist von der Version, die die Variable `hallo` nutzt nicht zu unterscheiden.\n",
199+
"::: \n",
200+
"\n",
201+
":::: \n"
202+
]
203+
},
204+
{
205+
"cell_type": "markdown",
206+
"id": "4a49e5c5-3f23-4f83-9a51-3ab4f70db039",
207+
"metadata": {},
208+
"source": [
209+
"\n",
210+
":::{hint} Kommentare in Python-Code\n",
211+
"Die Zahlen am Ende eines Ausdrucks (bspw. `# 1`) sind ein Kommentar, um in der Musterlösung einzelne Zeilen referenzieren zu können.\n",
212+
"\n",
213+
"In Python beginnen Kommentare mit einem `#` und es wir alles bis zum Zeilenende vom Interpreter ignoriert. Kommentare sind für Menschen, die den Code lesen gedacht und nicht für den Computer.\n",
214+
"::: \n",
215+
"\n",
216+
"\n"
217+
]
218+
},
219+
{
220+
"cell_type": "markdown",
221+
"id": "421eb2dd-5d59-472d-9323-9157279b8b21",
222+
"metadata": {},
223+
"source": [
224+
"**Nutzung der REPL**"
225+
]
226+
},
153227
{
154228
"cell_type": "code",
155229
"execution_count": null,

0 commit comments

Comments
 (0)