Skip to content

Commit 872f783

Browse files
committed
feat: Add first draft of section on REPL
1 parent 35d2bae commit 872f783

3 files changed

Lines changed: 148 additions & 6 deletions

File tree

020-Projekt_Taschenrechner/000-Einleitung.md

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,11 @@ In diesem Kapitel erlernen Sie, …
1616
1717
- … welche mathematischen Operationen in Python unterstützt werden.
1818
- … wie Zahlen in Python repräsentiert werden.
19+
- … wie Sie Code in einer Datei speichern.
1920
- … wie Sie einfache Funktionen in Python schreiben.
20-
- … wie Sie Code in einer Datei speichern, um ihn später zu importieren.
21-
- … wie Sie lokale Python-Dateien importieren.
22-
- … wie Sie Programmbibliotheken ("libraries", "packages") per `pip`
23-
installieren und in Ihrem Notebook nutzen.
2421
- … wie Sie Nutzereingaben einlesen und Ergebnisse ausgeben.
22+
- … wie Sie lokale Python-Dateien importieren, um sie in anderem Code
23+
wiederzuverwenden.
2524
2625
```
2726

@@ -55,5 +54,4 @@ Funktionalitäten.
5554
- `float()`
5655
- `def`
5756
- `import`
58-
- `pip`
5957
- `if __name__=="__main__":`

020-Projekt_Taschenrechner/010-Python_REPL.md

Lines changed: 144 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,149 @@ numbering:
55
title: true
66
figure:
77
template: Abb. %s
8+
jupyter:
9+
jupytext:
10+
text_representation:
11+
extension: .md
12+
format_name: markdown
13+
format_version: "1.3"
14+
jupytext_version: 1.17.3
15+
kernelspec:
16+
display_name: Selbstlernkurs_Python
17+
language: python
18+
name: python3
819
---
920

10-
# Das Programm `python3` - **R**ead-**E**val-**P**rint-**L**oop
21+
# Die Read-Eval-Print-Loop (REPL)
22+
23+
Im Kapitel zur Installation haben Sie einmal `python3 --version` im Terminal
24+
ausgeführt um sicherzustellen, dass Sie ein aktuelles und funktionierendes
25+
Python installiert haben. Nun machen Sie die ersten Schritte mit Python Code.
26+
27+
## Starten der Python REPL
28+
29+
`````{margin}
30+
````{admonition} Wiederholung
31+
:class: seealso
32+
Im gesamten Kurs werden Eingaben im Terminal wie folgt dargestellt:
33+
```console
34+
$ echo "Hallo Welt"
35+
Hallo Welt
36+
```
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>`.
38+
39+
Achten Sie darauf, dass Sie ggf. Dateipfade anpassen müssen. Mehr dazu im [Exkurs: Unix](/030-Exkurs_Unix/Einleitung.md).
40+
````
41+
`````
42+
43+
Führen Sie das Programm `python3` im Terminal aus, so startet es in die REPL.
44+
45+
```console
46+
$ python3
47+
Python 3.13.7 (main, Aug 14 2025, 11:12:11) [Clang 17.0.0 (clang-1700.0.13.3)] on darwin
48+
Type "help", "copyright", "credits" or "license" for more information.
49+
>>>
50+
```
51+
52+
Um die REPL zu verlassen, tippen Sie `quit()` oder nutzen Sie (in Unix-basierten Betriebssysteme) die Tastekombination `<Strg-D>`.
53+
54+
## Ihr erstes Python
55+
56+
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.
57+
58+
Nachfolgend finden Sie ein paar Beispiele. Probieren Sie diese selbst aus und ändern Sie sie dann ab.
59+
60+
```python-repl
61+
>>> 2+2
62+
4
63+
```
64+
65+
```python-repl
66+
>>> "Hallo, Welt!"
67+
'Hallo, Welt!"
68+
```
69+
70+
```python-repl
71+
>>> print("Hallo, Welt!")
72+
Hallo, Welt!
73+
```
74+
75+
Ist der Python-Code noch nicht vollständig, so verändert sich der Prompt zu `... `.
76+
77+
```python-repl
78+
>>> print(
79+
...
80+
... "Hallo"
81+
... )
82+
Hallo
83+
```
84+
85+
## Die Struktur einer REPL
86+
87+
Eine REPL ist ein Programm, welches:
88+
89+
1. _**R**ead_: Einen Befehl oder hier ein Stück Python-Code einliest.
90+
2. _**E**val_: Dann den Code ausführt.
91+
3. _**P**rint_: Das Ergebnis des ausgeführten Codes zurück gibt.
92+
4. _**L**oop_: Und das solange wiederholt, bis es beendet wird (bei Python via `quit()`).
93+
94+
```{code-cell}
95+
:tags: [remove-cell]
96+
from jupyterquiz import display_quiz
97+
c = { '--jq-multiple-choice-bg': '#202080',
98+
'--jq-mc-button-bg': '#fafafa',
99+
'--jq-mc-button-border': '#e0e0e0e0',
100+
'--jq-mc-button-inset-shadow': '#555555',
101+
'--jq-many-choice-bg': '#202080',
102+
'--jq-numeric-bg': '#202080',
103+
'--jq-numeric-input-bg': '#c0c0c0',
104+
'--jq-numeric-input-label': '#101010',
105+
'--jq-numeric-input-shadow': '#999999',
106+
'--jq-string-bg': '#202080',
107+
'--jq-incorrect-color': '#c80202',
108+
'--jq-correct-color': '#009113',
109+
'--jq-text-color': '#fafafa',
110+
'--jq-link-color': '#9abafa' }
111+
```
112+
113+
TODO: Abbildung REPL
114+
115+
TODO: genauere Erklärung des Ablaufs von bspw. `print("Hallo")`.
116+
117+
## Lernstandskontrolle
118+
119+
```{code-cell}
120+
:tags: [remove-input]
121+
q = [{
122+
"question": "Welche Ausgabe erhalten Sie, wenn Sie <pre>>>> 3**3</pre> in die REPL eingeben?",
123+
"type": "multiple_choice",
124+
"answers": [
125+
{ "code": "3**3", "correct": False },
126+
{ "code": "9", "correct": True },
127+
{ "code": "6", "correct": False },
128+
{ "code": "33", "correct": False },
129+
{ "code": "333", "correct": False },
130+
{ "code": "SyntaxError", "correct": False }
131+
]
132+
},
133+
{
134+
"question": "Wie können Sie eine Kommazahl in Python eingeben?<br>Probieren Sie auch die falschen Optionen aus. Was ist deren Ergebnis?",
135+
"type": "multiple_choice",
136+
"answers": [
137+
{ "code": "12,34", "correct": False },
138+
{ "code": "12.34", "correct": True },
139+
{ "code": "1234e-2", "correct": True },
140+
{ "code": "123,4e-1", "correct": False },
141+
]
142+
},
143+
{
144+
"question": "Welche Ausgabe ergibt die folgende Eingabe in die REPL? Geben die Ausgabe bis zum ersten Leerzeichen ein.<pre>>>> test</pre>",
145+
"type": "string",
146+
"answers": [
147+
{ "answer": "NameError:", "correct": True,
148+
"match_case": False, "fuzzy_threshold": 0.9,
149+
"feedback": "Korrekt. Wie in der Fehlermeldung angegeben ist die Variable `test` nicht definiert, weshalb Sie deren Wert nicht auslesen können."},
150+
]
151+
}]
152+
display_quiz(q, colors=c)
153+
```

requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
jupyter-book==2.0.0b3
22
ipywidgets
3+
jupyterquiz

0 commit comments

Comments
 (0)