4.5 Fertige Funktionalitäten verwenden

Hier lernen wir einen kleinen Ausschnitt der Mächtigkeit der Programmiersprache Python kennen.

🧰 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
strip() Löscht Leerzeichen am Anfang und Ende eines Strings, z.B. bei input() eingabe = strip(input())
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()

# Verwendung von sort() - verändert die ursprüngliche Liste
meineListe = [5, 3, 8, 1, 2]  # ursprüngliche Liste
meineListe.sort()  # jetzt ist meineListe sortiert.
print(f"Sortiert (In-Place): {meineListe}")

# Rückwärtssortierung mit sort()
meineListe.sort(reverse=True)  # Sortiert die Liste rückwärts in-place
print(f"Rückwärtssortiert (In-Place): {meineListe}")

# Verwendung von sorted() - erzeugt eine neue sortierte Liste
originalListe = [7, 4, 9, 3, 6]
sortierteListe = sorted(originalListe)  # Erstellt eine neue sortierte Liste
print(f"OriginalListe: {originalListe}")  # Unverändert
print(f"Sortierte Liste: {sortierteListe}")  # Sortiert

# Rückwärtssortierung mit sorted()
rueckwaertsSortierteListe = sorted(originalListe, reverse=True)  # Erstellt eine neue rückwärtssortierte Liste
print(f"Rückwärtssortierte Liste: {rueckwaertsSortierteListe}")

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!

# Eine Funktion, um die Quadrate einer Zahl zu berechnen
def SquareNumber(x):
    return x ** 2

# Liste von Zahlen
numberList = [1, 2, 3, 4, 5]

# Verwenden von map() mit SquareNumber-Funktion
squaredList = list(map(SquareNumber, numberList))

print(f"OriginalList: {numberList}")
print(f"SquaredList: {squaredList}")

Ausgabe:
OriginalList: [1, 2, 3, 4, 5]
SquaredList: [1, 4, 9, 16, 25]

🧪 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'.

1
2
3
4
5
6
7
# Liste von Wörtern
wortListe = ['Hallo', 'Welt', 'von', 'MicroPython']

# Verbinden der Liste zu einem String mit Leerzeichen als Trennzeichen
verbundenerString = ' '.join(wortListe)

print(verbundenerString)

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.

# Liste mit verschiedenen Datentypen
gemischteListe = ['Temperatur:', 23, 'Grad']

# Umwandlung aller Elemente in Strings
stringListe = []
for element in gemischteListe:
    element = str(element)
    stringListe.append(element)

# Verbinden der Liste zu einem String mit Leerzeichen als Trennzeichen
verbundenerString = ' '.join(stringListe)

print(verbundenerString)
Ausgabe:
Temperatur: 23 Grad

Nerdwissen for-Schleife in einer Zeile

Folgende Scripte erzeugen die gleiche Ausgabe.

# Liste mit verschiedenen Datentypen
gemischteListe = ['Temperatur:', 23, 'Grad']

# Umwandlung aller Elemente in Strings
stringListe = []
for element in gemischteListe:
    element = str(element)
    stringListe.append(element)

# Verbinden der Liste zu einem String mit Leerzeichen als Trennzeichen
verbundenerString = ' '.join(stringListe)

print(verbundenerString)
# Liste mit verschiedenen Datentypen
gemischteListe = ['Temperatur:', 23, 'Grad']

# Umwandlung aller Elemente in Strings
stringListe = [str(element) for element in gemischteListe]

# Verbinden der Liste zu einem String mit Leerzeichen als Trennzeichen
verbundenerString = ' '.join(stringListe)

print(verbundenerString)

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.

1
2
3
4
5
6
7
# String mit Wörtern
satz = 'MicroPython ist großartig'

# Aufteilen des Strings in eine Liste von Wörtern
wortListe = satz.split(' ')

print(wortListe)

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:

1
2
3
4
5
6
7
# String
wort = 'MicroPython'

# Umwandeln des Strings in eine Liste von Zeichen
zeichenListe = list(wort)

print(zeichenListe)

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:

NumberA = [1, 2]
NumberB = [5, 6]

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

Lösung
1
2
3
4
5
6
NumberA = [1, 2]
NumberB = [5, 6]

for n in NumberA:
    for m in NumberB:
        print(n, " + ", m, " = ", n + m) # oder besser print(f"{n} + {m} = {n + m}")

🎲 Arbeiten mit Zufallszahlen - Lottozahlen 6 aus 49

Versuchen Sie den Soucecode zu verstehen.

import random

# Erstelle eine Liste von Zahlen von 1 bis 49
zahlenListe = list(range(1, 50))

# Liste zum Speichern der gezogenen Lottozahlen. 
# Die Erstellung einer leeren Liste ist ein wichtiges Konzept!
lottoZahlen = []

# Ziehe 6 verschiedene Zahlen
for _ in range(6):

    # Wähle zufällig eine Zahl aus der Liste
    gezogeneZahl = random.choice(zahlenListe)
    # Füge die gezogene Zahl zur Lottozahlen-Liste hinzu
    lottoZahlen.append(gezogeneZahl)
    # Entferne die gezogene Zahl aus der Liste, damit sie nicht erneut gezogen wird
    zahlenListe.remove(gezogeneZahl)

# Sortiere die gezogenen Lottozahlen zur besseren Übersicht
lottoZahlen.sort()

# Ausgabe der gezogenen Lottozahlen
print(f"Die gezogenen Lottozahlen sind: {lottoZahlen}")
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.

import random

# Programm zur zufälligen Anordnung sortierter Zahlen
print("Wie viele zufällige Zahlen sollen generiert werden?")
anzahlZahlen = int(input("Bitte Anzahl eingeben: "))

# Liste zum Speichern zufällig generierter Zahlen
zahlenListe = []

# Generiere die gewünschte Anzahl zufälliger Zahlen und füge sie zur Liste hinzu
for _ in range(anzahlZahlen):
    zufallsZahl = random.randint(1, 1000)
    zahlenListe.append(zufallsZahl)

# Ausgabe der generierten Zufallszahlen

print(f"Wir haben folgende Zufallszahlen gezogen: {zahlenListe}")
# Eigene Funktion, um die Liste zufällig zu mischen
def customShuffle(liste):
    for i in range(len(liste) - 1, 0, -1):
        j = random.randint(0, i)
        liste[i], liste[j] = liste[j], liste[i]

# Sortier-Check-Variable und Versuchszähler initialisieren
istSortiert = False
anzahlVersuche = 0

# Zufälliges Mischen und Überprüfung, ob die Liste sortiert ist
while not istSortiert:
    # Zufälliges Anordnen der Liste mit customShuffle
    customShuffle(zahlenListe)
    istSortiert = True  # Annahme, dass die Liste sortiert ist

    # Gehe durch die Liste und überprüfe, ob sie wirklich sortiert ist
    for i in range(len(zahlenListe) - 1):
        if zahlenListe[i] > zahlenListe[i + 1]:
            istSortiert = False  # Wenn ein Element größer als das nächste ist, ist die Liste nicht sortiert
            break  # Überprüfung kann abgebrochen werden, Liste ist unsortiert

    # Versuchszähler erhöhen und Liste ausgeben
    anzahlVersuche += 1
    print(f"Versuch {anzahlVersuche}: {zahlenListe}")

# Ausgabe der Anzahl der Versuche, bis die Liste sortiert war
print(f"Die Liste ist sortiert! Anzahl der Versuche: {anzahlVersuche}")
print("Fertig!")