|
34 | 34 | "$ echo \"Hallo Welt\"\n", |
35 | 35 | "Hallo Welt\n", |
36 | 36 | ":::\n", |
37 | | - "Dabei beginnen Zeilen mit einem Terminal-Befehl mit `$ ` und darauffolgende Zeilen bis zum nächsten `$ ` die Ausgabe des Befehls. Wenn Sie die Schritte nachvollziehen, geben Sie den Befehl selbst ein und 'starten' diesen mit `<Enter>`.\n", |
| 37 | + "Dabei beginnen Zeilen mit einem Terminal-Befehl mit `$ ` und darauffolgende\n", |
| 38 | + "Zeilen bis zum nächsten `$ ` die Ausgabe des Befehls. Wenn Sie die Schritte\n", |
| 39 | + "nachvollziehen, geben Sie den Befehl selbst ein und 'starten' diesen mit\n", |
| 40 | + "{kbd}`Enter`.\n", |
38 | 41 | "\n", |
39 | 42 | "Es werden nicht alle Ausgaben (vollständig) dargestellt.\n", |
40 | 43 | "\n", |
41 | | - "Achten Sie darauf, dass Sie ggf. Dateipfade anpassen müssen. Mehr dazu im [Exkurs: Unix](/030-Exkurs_Unix/Einleitung.md).\n", |
| 44 | + "Achten Sie darauf, dass Sie ggf. Dateipfade anpassen müssen. Mehr dazu im\n", |
| 45 | + "[Exkurs: Unix](/030-Exkurs_Unix/Einleitung.md).\n", |
42 | 46 | "::::\n", |
43 | 47 | ":::::\n", |
44 | 48 | "\n", |
|
51 | 55 | ">>>\n", |
52 | 56 | "```\n", |
53 | 57 | "\n", |
54 | | - "Um die REPL zu verlassen, tippen Sie `quit()` oder nutzen Sie (in Unix-basierten Betriebssysteme) die Tastekombination `<Strg-D>`.\n", |
| 58 | + "Um die REPL zu verlassen, tippen Sie `quit()` oder nutzen Sie (in\n", |
| 59 | + "Unix-basierten Betriebssysteme) die Tastekombination {kbd}`Strg`+{kbd}`D`.\n", |
55 | 60 | "\n", |
56 | 61 | "## Ihr erstes Python\n", |
57 | 62 | "\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", |
| 63 | + "Die REPL verhält sich ähnlich zum Terminal, nur dass nicht Befehle nach\n", |
| 64 | + "(typischerweise) einem \"`$ `\" eingegeben werden, sondern dass Python-Code nach\n", |
| 65 | + "einem \"`>>> `\" eingegeben wird.\n", |
59 | 66 | "\n", |
60 | | - "Nachfolgend finden Sie ein paar Beispiele. Probieren Sie diese selbst aus und ändern Sie sie dann ab.\n", |
| 67 | + "Nachfolgend finden Sie ein paar Beispiele. Probieren Sie diese selbst aus und\n", |
| 68 | + "ändern Sie sie dann ab.\n", |
61 | 69 | "\n", |
62 | 70 | "```python-repl\n", |
63 | 71 | ">>> 2+2\n", |
|
91 | 99 | "1. _**R**ead_: Einen Befehl oder hier ein Stück Python-Code einliest.\n", |
92 | 100 | "2. _**E**val_: Dann den Code ausführt.\n", |
93 | 101 | "3. _**P**rint_: Das Ergebnis des ausgeführten Codes zurück gibt.\n", |
94 | | - "4. _**L**oop_: Und das solange wiederholt, bis es beendet wird (bei Python via `quit()`).\n" |
| 102 | + "4. _**L**oop_: Und das solange wiederholt, bis es beendet wird (bei Python via\n", |
| 103 | + " `quit()`).\n" |
95 | 104 | ] |
96 | 105 | }, |
97 | 106 | { |
|
139 | 148 | " ```bash\n", |
140 | 149 | " $ python3\n", |
141 | 150 | " ```\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", |
| 151 | + "2. Python startet, gibt die Versionsinformationen aus und zeigt Ihnen mit dem\n", |
| 152 | + " Prompt `>>> ` an, dass es zum Einlesen eines Python-Ausdrucks bereit ist.\n", |
| 153 | + " \n", |
| 154 | + " Die REPL ist nun im Zustand _Read_.\n", |
143 | 155 | "3. Sie können nun einen Python-Ausdruck eingeben. Dieser kann `print(\"Hallo\")` sein oder aber auch\n", |
144 | 156 | " ```\n", |
145 | 157 | " >>> print(\n", |
146 | 158 | " ... \"Hallo\"\n", |
147 | 159 | " ... )\n", |
148 | 160 | " ```\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." |
| 161 | + " \n", |
| 162 | + " Während Sie den Ausdruck eingeben bleibt die REPL im Status _Read_. Haben\n", |
| 163 | + " Sie einen vollständigen Ausdruck eingegeben (Wann ein Ausdruck \"vollständig\"\n", |
| 164 | + " ist lernen Sie später.) und drücken Sie dann die Eingabetaste, so wechselt\n", |
| 165 | + " die REPL in den Zustand _Eval_.\n", |
| 166 | + "4. Bei der Evaluation des Python-Ausdrucks versucht der Interpreter, den Code\n", |
| 167 | + " auszuführen. Ist er korrekt (und bezieht sich nur auf Namen(/Variablen), die\n", |
| 168 | + " bereits definiert wurden), so wird der Code ausgeführt. Nachdem der Code\n", |
| 169 | + " ausgeführt wurde wechselt die REPL in den Zustand _Print_ und es wird das\n", |
| 170 | + " **Ergebnis** des gerade ausgeführten Python-Codes gedruckt.\n", |
| 171 | + "5. Dann wird in den Zustand _Loop_ gewechselt und überprüft, ob eine\n", |
| 172 | + " Abbruchbedingung erreicht wurde. Ist dies nicht der Fall – soll also wieder\n", |
| 173 | + " von Anfang begonnen werden so wechselt die REPL zurück in den Zustand _Read_\n", |
| 174 | + " und der Ablauf springt damit zu Schritt 2. Soll die Schleife nicht fortgesetzt\n", |
| 175 | + " werden, so geht die REPL über in den Zustand _Stop_ und der Python-Interpreter\n", |
| 176 | + " wird beendet." |
152 | 177 | ] |
153 | 178 | }, |
154 | 179 | { |
|
173 | 198 | "**Nachvollziehen der Zustände der REPL**\n", |
174 | 199 | "::::{admonition} 💪 Übung\n", |
175 | 200 | ":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", |
| 201 | + "\n", |
| 202 | + "Nachvollziehen Sie die nachfolgende REPL-Interaktion. Was sind Ausgaben per\n", |
| 203 | + "`print` und was sind Ausgaben durch den Zustand _Print_ der REPL?\n", |
177 | 204 | "\n", |
178 | 205 | "```python-repl\n", |
179 | 206 | ">>> hallo = \"Hallo Python-Lernende\" # 1\n", |
|
187 | 214 | "```\n", |
188 | 215 | "\n", |
189 | 216 | ":::{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 | 217 | "\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", |
| 218 | + "_**zu 1:**_ Hier wird eine Variable mit dem Namen `hallo` erzeugt in der das\n", |
| 219 | + "String-Literal `\"Hallo Python-Lernende\"` gespeichert wird. Dieser Ausdruck hat\n", |
| 220 | + "kein Ergebnis, weshalb nach der Zeile sofort der Prompt für die nächste Eingabe\n", |
| 221 | + "angezeigt wird.\n", |
| 222 | + "\n", |
| 223 | + "_**zu 2:**_ Hier besteht der Python-Ausdruck nur aus der Variablen mit dem\n", |
| 224 | + "Namen `hallo`. Eine Variable hat ihren Wert als Ergebnis, weshalb im Zustand\n", |
| 225 | + "_Print_ der REPL das String-Literat `'Hallo Python-Lernende'` ausgegeben wird\n", |
| 226 | + "(siehe _**3**_).\n", |
193 | 227 | "\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", |
| 228 | + "Beachten Sie, dass in Python Strings entweder mit `'` oder mit `\"` umschlossen\n", |
| 229 | + "werden können. Sie sind gleichwertig und die Verwendung ist nur relevant, wenn\n", |
| 230 | + "der String selbst ein `'` oder ein `\"` enthält. Der String `\"Wie geht's?\"`\n", |
| 231 | + "müssten mit einfachen Anführungszeichen mit Hilfe eines sog. Escape-Zeichens\n", |
| 232 | + "geschrieben werden: `'Wie geht\\'s?'`. Anders herum wäre es bei diesem String:\n", |
| 233 | + "`\"Sie sagte: \\\"Hallo.\\\"\"` bzw. `'Sie sagte: \"Hallo.\"'`.\n", |
195 | 234 | "\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", |
| 235 | + "_**zu 4:**_ Hier wird die Funktion `print()` genutzt um den Wert der Variablen\n", |
| 236 | + "`hallo` zu drucken. Dies geschieht im Zustand _Eval_ und die Ausgabe dazu ist\n", |
| 237 | + "in _**5**_ zu sehen. Die Funktion `print()` hat selbst kein Ergebnis, weshalb\n", |
| 238 | + "nichts zusätzliches durch den Zustand _Print_ ausgegeben wird.\n", |
| 239 | + "\n", |
| 240 | + "_**zu 6:**_ In diesem Schritt wird wie beim ersten Beispiel die Funktion\n", |
| 241 | + "`print()` mit einem String-Literal genutzt. Die Ausgabe in _**7**_ ist von der\n", |
| 242 | + "Version, die die Variable `hallo` nutzt nicht zu unterscheiden.\n", |
197 | 243 | "\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 | 244 | "::: \n", |
200 | 245 | "\n", |
201 | | - ":::: \n" |
| 246 | + ":::: \n", |
| 247 | + "\n" |
202 | 248 | ] |
203 | 249 | }, |
204 | 250 | { |
205 | 251 | "cell_type": "markdown", |
206 | 252 | "id": "4a49e5c5-3f23-4f83-9a51-3ab4f70db039", |
207 | 253 | "metadata": {}, |
208 | 254 | "source": [ |
209 | | - "\n", |
210 | 255 | ":::{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 | 256 | "\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", |
| 257 | + "Die Zahlen am Ende eines Ausdrucks (bspw. `# 1`) sind ein Kommentar, um in der\n", |
| 258 | + "Musterlösung einzelne Zeilen referenzieren zu können.\n", |
| 259 | + "\n", |
| 260 | + "In Python beginnen Kommentare mit einem `#` und es wir alles bis zum Zeilenende\n", |
| 261 | + "vom Interpreter ignoriert. Kommentare sind für Menschen, die den Code lesen\n", |
| 262 | + "gedacht und nicht für den Computer.\n", |
| 263 | + "\n", |
214 | 264 | "::: \n", |
215 | 265 | "\n", |
216 | 266 | "\n" |
|
0 commit comments