In diesem Schritt werden wir uns mit weiteren erweiterten Funktionen und Algorithmen auseinandersetzen. Ein wichtiger Aspekt von Funktionen ist die Verwendung von Generatoren. Generatoren sind Funktionen, die Werte erzeugen, anstatt sie in einer Liste zu speichern. In Python können wir Generatoren mit der yield-Anweisung definieren. Beispiel:
def generiere_zahlen(n):
for i in range(n):
yield i
for zahl in generiere_zahlen(5):
print(zahl)
Ein weiterer wichtiger Aspekt von Algorithmen ist die Verwendung von dynamischer Programmierung. Dynamische Programmierung ist eine Methode, bei der wir ein Problem in kleinere Teile aufteilen und die Lösungen dieser Teile speichern, um das ursprüngliche Problem zu lösen. Ein Beispiel für einen Algorithmus, der dynamische Programmierung verwendet, ist der Fibonacci-Algorithmus. Beispiel:
def fibonacci(n):
fib = [0, 1]
for i in range(2, n+1):
fib.append(fib[i-1] + fib[i-2])
return fib[n]
print(fibonacci(10))
Wir können auch Algorithmen verwenden, um geometrische Probleme zu lösen. Ein Beispiel für einen Algorithmus, der geometrische Probleme löst, ist der Algorithmus zur Berechnung des Abstands zwischen zwei Punkten. Beispiel:
import math
def abstand(p1, p2):
return math.sqrt((p1[0] - p2[0])**2 + (p1[1] - p2[1])**2)
p1 = (1, 2)
p2 = (4, 6)
print(abstand(p1, p2))