4.10 Dies und Das
Aufgaben
Übung
Erstellen Sie ein Programm zur Berechnung des Duchschnittsalters. Zuerst soll abgefragt werden, wie viele Angaben eingegeben werden (also über wie viele Studierende das Alter ermittelt werden soll). Anschließend soll so oft nach dem Alter gefragt werden und die Angaben sollen in einer Liste gespeichert werden. Und als letztes soll das Durchschnittsalter in einer Funktion ermittelt und über return an das Hauptprogramm übergeben werden.
Einfache Beispiele für Funktionen
Was geht, aber total verrückt ist (bitte so nicht programmieren). Die Variablen a und b werden hier automatisch als globale Variablen verwendet. https://www.python-kurs.eu/python3_global_lokal.php
Die Funktionen int() und isinstance()
Die Funktion int()
in Python dient dazu, Werte in Ganzzahlen umzuwandeln.
Möchte man überprüfen, ob ein Wert schon ein Intager ist, verwendet man die Funktion isinstance()
.
Einfache und doppelte Anführungszeichen
In Python können einfache ('
) und doppelte ("
) Anführungszeichen verwendet werden, um Stringn zu definieren. Beide Varianten verhalten sich gleich und haben dieselbe Funktionalität. Sie werden oft je nach Bedarf eingesetzt:
- Einfache Anführungszeichen werden verwendet, wenn doppelte Anführungszeichen innerhalb der String auftreten, da so das Escapen von Zeichen vermieden werden kann.
- Doppelte Anführungszeichen werden oft verwendet, wenn einfache Anführungszeichen im Text enthalten sind.
Beispiel:
Drei Anführungszeichen
Für komplexere Stringn, wie etwa mehrzeilige Strings, können dreifache Anführungszeichen ('''
oder """
) verwendet werden. Sie sind besonders nützlich, um längere Texte und Dokumentationen (Docstrings) klar zu formatieren.
Python kennt '#' als Zeichen für einzeilige Kommentare. Es gibt aber nichts für mehrzeilige Kommentare (andere Programmiersprachen nutzen dann / ... /). In Python verwendet man dann mehrzeilige Strings (ohne diese einer Variablen zuzuweisen) als "Quasi-Kommentar"
Man kann in den Mehrzeilen-String auch Variablen einfügen. Hier zum Beispiel die Variable state
.
Anzahl abfragen, wie oft geblinkt werden soll
Hier nun soll die Anzahl in einer Funktion addZahl()
um 3 erhöht werden
Variablenkonvertierung
Code | Printergebnis | Beschreibung |
---|---|---|
print(int(5)) |
5 |
Integer in Integer umwandeln |
print(int(8.7)) |
8 |
Gleitkommazahl in Integer umwandeln (abschneiden) |
print(float(6)) |
6.0 |
Integer in Gleitkommazahl umwandeln |
print(str(7)) |
'7' |
Integer in String umwandeln |
print(str(10.5)) |
'10.5' |
Gleitkommazahl in String umwandeln |
print(int("2")) |
2 |
String, die eine Zahl enthält, in Integer umwandeln |
print(float('4.2')) |
4.2 |
String in Gleitkommazahl umwandeln |
print(int("2a")) |
ValueError: ... |
Fehlermeldung, da String nicht rein numerisch ist |
print(int("a2")) |
ValueError: ... |
Fehlermeldung, da String nicht rein numerisch ist |
Arbeiten mit Zufallszahlen - Lottozahlen 6 aus 49
Versuchen Sie den Soucecode zu verstehen.
Nerdwissen Eine kleine Knobelaufgabe...
Wie funktioniert dieser Sourcecode?
Wenn man nicht weiterkommt, dann kann man immer konkrete Werte einsetzen (und sich zum Beispiel auch Zufallszahlen ausdenken). Schwierige Zeilen durch das Hinzuziehen der Dokumentation (oder ChatGPT, wobei die Dokumentation für das tiefere Verständnis oft der bessere Weg ist). Im Sourcecode unten hatten wir z.B. range() noch nicht mit drei Argumenten. Die Dokumentation zu range() findet sich hier.
Listen in Strings umwandeln und umgekehrt in MicroPython
In MicroPython, wie auch in Python, ist die Konvertierung zwischen Listen und Zeichenketten eine häufige Aufgabe. Im Folgenden werden Methoden vorgestellt, um Listen in Strings und umgekehrt umzuwandeln.
Liste in String umwandeln
Um eine Liste von Zeichenketten in einen einzelnen String zu konvertieren, verwendet man die Methode join()
. Diese Methode verbindet die Elemente der Liste zu einem String, wobei ein spezifisches Trennzeichen zwischen den Elementen eingefügt wird. Im folgenden Beispiel werden die Elemente der Liste wortListe
mit einem Leerzeichen verbunden. Das Ergebnis ist der String 'Hallo Welt von MicroPython'
.
Ausgabe:
Hallo Welt von MicroPython
Hinweis: Die Methode join()
erwartet, dass alle Elemente der Liste vom Typ str
sind. Falls die Liste andere Datentypen enthält, müssen diese zuvor in Strings umgewandelt werden.
Temperatur: 23 Grad
Nerdwissen for-Schleife in einer Zeile
Folgende Scripte erzeugen die gleiche Ausgabe.
String in Liste umwandeln
Um einen String in eine Liste von Teilstrings zu zerlegen, verwendet man die Methode split()
. Diese Methode teilt den String an einem angegebenen Trennzeichen und gibt die Teilstrings als Listenelemente zurück. Wenn kein Trennzeichen an split()
übergeben wird, wird standardmäßig an Leerzeichen, Tabulatoren und Zeilenumbrüchen aufgeteilt.
Ausgabe:
['MicroPython', 'ist', 'großartig']
Zeichenkette in Liste von Zeichen umwandeln:
Um einen String in eine Liste von einzelnen Zeichen zu zerlegen, kann die Funktion list()
verwendet werden.
Beispiel:
Ausgabe: ['M', 'i', 'c', 'r', 'o', 'P', 'y', 't', 'h', 'o', 'n']
In diesem Fall wird der String wort
in seine einzelnen Zeichen zerlegt und als Liste zurückgegeben.
Diese Methoden ermöglichen eine flexible Handhabung von Strings und Listen in MicroPython und sind nützlich für verschiedene Anwendungsfälle, wie z. B. das Parsen von Eingaben oder das Formatieren von Ausgaben.
Folgende Python-Funktionen haben wir somit kennen gelernt:
Funktion | Beschreibung | Beispiel | Ausgabe |
---|---|---|---|
join() |
Verbindet eine Liste von Strings zu einem einzelnen String mit einem definierten Trennzeichen. | ' '.join(['Hallo', 'Welt']) |
'Hallo Welt' |
split() |
Zerlegt einen String in eine Liste von Teilstrings anhand eines definierten Trennzeichens. | 'MicroPython ist großartig'.split(' ') |
['MicroPython', 'ist', 'großartig'] |
list() |
Wandelt einen String in eine Liste einzelner Zeichen um. | list('MicroPython') |
['M', 'i', 'c', 'r', 'o', 'P', 'y', 't', 'h', 'o', 'n'] |
Aufgabe: Kombination von Zahlenlisten addieren
Übung
Gegeben sind zwei Listen von Zahlen:
Schreibe ein Programm, das jede Zahl aus NumberA
mit jeder Zahl aus NumberB
kombiniert und die Summe ausgibt. Die Ausgabe soll das Format 1 + 5 = 6
haben.
Erwartete Ausgabe:
1 + 5 = 6
1 + 6 = 7
2 + 5 = 7
2 + 6 = 8
Visual Studio statt Thonny
Um von Thonny zu Visual Studio Code (VS Code) für die Programmierung des Raspberry Pi Pico mit MicroPython zu wechseln, folgen Sie diesen Schritten:
-
VS Code installieren: Visual Studio Code Download.
-
Pico-W-Go-Erweiterung in VS Code installieren
-
Öffnen Sie VS Code.
-
Klicken Sie auf Erweiterungen (linke Leiste unteres Symbol mit 3+1 Vierecke).
-
Suchen Sie nach "Pico-W-Go" und installieren Sie die Erweiterung.
-
-
Projektordner einrichten
-
Öffnen Sie den Ordner in dem die bisherigen .py-Dateien liegen oder erstellen Sie einen neuen Ordner für Ihr Projekt.
-
Öffnen Sie diesen Ordner in VS Code über
Datei
>Ordner öffnen
.
-
-
Verbindung zum Raspberry Pi Pico herstellen
-
Pi Pico mit dem Computer verbinden.
-
Pico-W-Go sollte den Pico automatisch erkennen und eine Verbindung herstellen: unten rechts muss dann ein Haken sein.
-
-
Code auf den Pico hochladen und ausführen: Klicken Sie mit der rechten Maustaste auf die Datei und wählen Sie "Pi-W-Go > Upload project", um den Code auf den Pico zu übertragen.
-
Weitere Ressourcen: Run-Button unten links benutzen.
Hier der Link zur offizielle Dokumentation von Pico-W-Go.
PyCharm statt Thonny
Anleitungen auf der offiziellen Dokumentation von MicroPython. Ich habe es bei mir nicht zum Laufen bekommen.
Um von Thonny zu PyCharm für die Programmierung des Raspberry Pi Pico mit MicroPython zu wechseln, folgen Sie diesen Schritten:
-
PyCharm installieren: PyCharm Community Edition Download. Pycharm ist für Studierende kostenlos.
-
MicroPython-Plugin in PyCharm installieren:
-
Öffnen Sie PyCharm.
-
Gehen Sie zu
Datei
>Einstellungen
(oderPyCharm
>Einstellungen
auf macOS). -
Wählen Sie im linken Menü
Plugins
aus. -
Suchen Sie im Marketplace nach "MicroPython" und installieren Sie das Plugin.
-
Starten Sie PyCharm neu, um die Installation abzuschließen.
-
-
Projektordner einrichten:
-
Öffnen Sie den Ordner, in dem die bisherigen
.py
-Dateien liegen, oder erstellen Sie einen neuen Ordner für Ihr Projekt. -
Öffnen Sie diesen Ordner in PyCharm über
Datei
>Ordner öffnen
.
-
-
MicroPython-Unterstützung im Projekt aktivieren
-
Gehen Sie zu
Datei
>Einstellungen
>Sprachen & Frameworks
>MicroPython
. -
Aktivieren Sie das Kontrollkästchen
MicroPython-Unterstützung aktivieren
.
-...
-
-
Code auf den Pico hochladen und ausführen:
-
Klicken Sie mit der rechten Maustaste auf die Datei und wählen Sie
Run 'Flash <Dateiname>'
, um den Code auf den Pico zu übertragen. -
Die Konsole zeigt den Fortschritt des Uploads und eventuelle Ausgaben Ihres Programms an.
-
Python Online-Interpreter
Einfache Programmier-Videos
Wer gut programmieren kann, kann es auch ohne das Video schaffen! Hier die Spielregeln: https://www.gruppenspiele-hits.de/wenig-material-spiele/Die-verflixte-Eins.html
Besonderheit: man soll mindestens 51 Punkte insgesamt haben.
https://www.youtube.com/watch?v=21FnnGKSRZo Start bei 2:15 und Ende bei 23:45.
Wenn das Spiel programmiert wurde, dann sind hier folgende Erweiterungen möglich:
-
Anleitung auf deutsch schreiben
-
Für 1 – 3 Spieler:innen erstellen
-
Mit zwei Würfeln würfeln und bei „2“ oder „3“ verliert man die Punkte
Eingebaute Funktionen in Python
Python bietet eine Vielzahl eingebauter Funktionen, die häufige Aufgaben erleichtern. Im Folgenden sind einige dieser Funktionen thematisch gruppiert mit ihren Parametern und Anwendungsbeispielen aufgeführt.
Iteration
Funktion | Parameter | Beschreibung | Beispiel |
---|---|---|---|
range() |
start (optional), stop , step (optional) |
Erzeugt eine Sequenz von Zahlen von start bis stop (exklusiv) mit dem Schritt step . |
range(1, 10, 2) erzeugt [1, 3, 5, 7, 9] |
Umwandlungen
Funktion | Beschreibung | Beispiel |
---|---|---|
int() |
Wandelt in eine Ganzzahl um. | int('10.6') gibt 10 zurück |
float() |
Wandelt in eine Gleitkommazahl um. | float('3.14') gibt 3.14 zurück |
str() |
Wandelt in eine Zeichenkette um. | str(100) gibt '100' zurück |
bool() |
Wandelt ein Element in einen Booleschen Wert um. | bool(1) gibt True zurück |
list() |
Wandelt in eine Liste um. | list('abc') gibt ['a', 'b', 'c'] zurück |
dict() |
Erstellt ein Wörterbuch. | dict(a=1, b=2) gibt {'a': 1, 'b': 2} zurück |
join() |
Verbindet eine Liste von Strings zu einem String mit einem Trennzeichen. | ' '.join(['Hallo', 'Welt']) gibt 'Hallo Welt' zurück |
split() |
Zerlegt einen String anhand eines Trennzeichens in eine Liste von Teilstrings. | 'MicroPython ist großartig'.split(' ') gibt ['MicroPython', 'ist', 'großartig'] zurück |
Aggregation und Reduktion
Funktion | Beschreibung | Beispiel |
---|---|---|
sum() |
Gibt die Summe der Elemente zurück. | sum([1, 2, 3]) gibt 6 zurück |
min() |
Gibt das kleinste Element zurück. | min(3, 1, 2) gibt 1 zurück |
max() |
Gibt das größte Element zurück. | max(3, 1, 2) gibt 3 zurück |
all() |
Gibt True zurück, wenn alle Elemente wahr sind. |
all([True, True, False]) gibt False zurück |
any() |
Gibt True zurück, wenn mindestens ein Element wahr ist. |
any([False, False, True]) gibt True zurück |
Sonstige Funktionen
Funktion | Beschreibung | Beispiel |
---|---|---|
len() |
Gibt die Anzahl der Elemente zurück. | len([1, 2, 3]) gibt 3 zurück |
type() |
Gibt den Typ eines Elements zurück. | type(42) gibt <class 'int'> zurück |
abs() |
Gibt den absoluten Wert einer Zahl zurück. | abs(-5) gibt 5 zurück |
round() |
Rundet eine Zahl auf die angegebene Anzahl von Dezimalstellen. | round(3.14159, 2) gibt 3.14 zurück |
sort() |
Sortiert eine Liste direkt (in-place), d. h., die ursprüngliche Liste wird verändert. | Siehe Beispiel unten |
sorted() |
Gibt eine neue, sortierte Liste zurück, ohne die ursprüngliche Liste zu verändern. Dies ist besser und stabiler! | Siehe Beispiel unten |
map() |
Wendet eine Funktion auf jedes Element eines iterierbaren Objekts an. | list(map(str, [1, 2, 3])) gibt ['1', '2', '3'] zurück |
Beispiel sort() und sorted()
Ausgabe:
Sortiert (In-Place): [1, 2, 3, 5, 8]
Rückwärtssortiert (In-Place): [8, 5, 3, 2, 1]
OriginalListe: [7, 4, 9, 3, 6]
Sortierte Liste: [3, 4, 6, 7, 9]
Rückwärtssortierte Liste: [9, 7, 6, 4, 3]
Nerdwissen map()
Funktion | Beschreibung | Beispiel |
---|---|---|
map() |
Wendet eine Funktion auf jedes Element eines iterierbaren Objekts an. | Siehe Beispiel unten |
Schauen Sie sich das Beispiel in Ruhe an, denn map() ist richtig gut!
Ausgabe:
OriginalList: [1, 2, 3, 4, 5]
SquaredList: [1, 4, 9, 16, 25]