9. Unterrichtsblock

Kursinhalte
Python PIP
PIP ist ein Paketmanager für Python-Pakete bzw. Module. Es ist das Standard-Werkzeug zur Paketverwaltung in Python. Es ermöglicht dir, externe Bibliotheken wie NumPy, Pandas, Matplotlib oder TensorFlow aus dem Python Package Index (PyPI) herunterzuladen und in deiner Umgebung zu installieren.
Der Paketmanager pip spielt eine zentrale Rolle in der Python-Entwicklung. Er macht Python modular und erweiterbar, sodass du nicht jede Funktion selbst programmieren musst, sondern auf eine Vielzahl bestehender Pakete zurückgreifen kannst. Dabei ist pip plattformunabhängig – du kannst dieselben Pakete unter Windows, macOS und Linux verwenden, ohne Anpassungen vornehmen zu müssen. Besonders wichtig ist pip im Zusammenhang mit virtuellen Umgebungen (venv): Dort werden Pakete isoliert installiert, sodass dein System-Python unangetastet bleibt und Konflikte zwischen Projekten vermieden werden.
Was ist ein Paket?
Ein Paket ist eine strukturierte Sammlung von Python-Dateien, die gemeinsam eine bestimmte Funktionalität bereitstellen – z. B. für Datenanalyse, Webentwicklung oder maschinelles Lernen. Ein Paket besteht aus mehreren Modulen und ggf. weiteren Ressourcen (z. B. Dokumentation, Daten, Konfigurationsdateien).
Modul vs. Paket – der Unterschied:
| Begriff | Bedeutung |
|---|---|
| Modul | Eine einzelne .py-Datei mit Python-Code, die Funktionen, Klassen oder Variablen enthält. |
| Paket | Ein Verzeichnis mit mehreren Modulen und einer __init__.py-Datei, das als Einheit importiert werden kann. |
Hinweis: Wenn man Python Version 3.4 oder höher installiert hat, ist PIP standardmäßig enthalten.
1. Überprüfung, ob PIP installiert ist
Öffne dein Terminal – unter Windows z. B. PowerShell, unter macOS oder Linux zsh oder bash – und gib einen der folgenden Befehle ein, um zu überprüfen, ob pip bei dir bereits installiert ist:
pip3 --version
oder
pip --version
Wenn eine Versionsnummer angezeigt wird (z. B. pip 23.3.1 from ...), dann ist pip installiert und einsatzbereit.
Wenn eine Fehlermeldung erscheint (z. B. „Befehl nicht gefunden“), musst du pip möglicherweise manuell installieren oder den Pfad überprüfen.
2. Python-Installation prüfen
Gib ein:
python --version
oder
python3 --version
Wenn Python nicht erkannt wird, installiere es zuerst von der offiziellen Seite: https://www.python.org/downloads
PIP manuell installieren
Wenn PIP nicht installiert ist, können man es von dieser Seite herunterladen und installieren: https://pypi.org/project/pip/
Nutze den eingebauten Installer:
python -m ensurepip --default-pip
Falls du Python 3 verwendest:
python3 -m ensurepip --default-pip
Das installiert pip in der Standardkonfiguration.
4. pip aktualisieren
python -m pip install --upgrade pip
Damit bekommst du die neueste Version.
5. Prüfen, ob pip jetzt funktioniert
pip --version
Du solltest nun die Versionsnummer sehen – z. B. pip 23.2.1.
6. (Nur bei Problemen) Pfad zur pip-Datei manuell setzen
Falls pip weiterhin nicht erkannt wird, liegt es oft daran, dass der Pfad zur Scripts-Ordner fehlt. Beispiel unter Windows:
setx PATH "%PATH%;C:\Users\DEIN_NAME\AppData\Local\Programs\Python\Python39\Scripts"
Ersetze DEIN_NAME und Python39 durch deine tatsächlichen Pfadangaben.
PIP Upgrade
python -m pip install --upgrade pip
Paket herunterladen
Das Herunterladen eines Pakets ist sehr einfach.
Hierzu öffnet man die Befehlszeilenschnittstelle und weist PIP an, das gewünschte Paket herunterzuladen. Man navigiert in der Befehlszeile zum Speicherort des Python-Skriptverzeichnisses und gibt Folgendes ein:
Herunterladen des Pakets „camelcase“:
C:\Users\Your Name\AppData\Local\Programs\Python\Python36-32\Scripts>pip3 install camelcase
Jetzt haben wir das erste Paket heruntergeladen und installiert!
Ein Paket verwenden
Sobald das Paket installiert ist, ist es einsatzbereit. Zunächst importieren wir das Paket „camelcase“ in unser Projekt.
Aufgabe
- Importiere camelcase in die datei test.py
- Lasse den Text „servus leute“ mit Hilfe des Pakets in CamelCase ausgeben
from camelcase import CamelCase
c = CamelCase()
s = 'das ist ein Text, der in CamelCase geschrieben werden soll!'
print c.hump(s)
Auflistung einiger Pakete
Weitere Pakete findet man unter https://pypi.org/
Entfernen eines Pakets
Man verwendet den uninstall Befehl, um ein Paket zu entfernen:
pip3 uninstall camelcase
Der PIP-Paketmanager fordert nun auf, zu bestätigen, dass man das Camelcase-Paket entfernen möchte:
Uninstalling camelcase-02.1:
Would remove:
c:\users\Your Name\appdata\local\programs\python\python36-32\lib\site-packages\camelcase-0.2-py3.6.egg-info
c:\users\Your Name\appdata\local\programs\python\python36-32\lib\site-packages\camelcase\*
Proceed (y/n)?
Man drückt y und das Paket wird entfernt.
Pakete auflisten
Hierfür verwendet man den list Befehl, um alle auf dem System installierten Pakete aufzulisten:
pip3 list
Ergebnis:
Package Version
------------------ ---------
aiohttp 3.8.4
aiosignal 1.3.1
async-timeout 4.0.2
attrs 22.2.0
camelcase 0.2
certifi 2022.12.7
charset-normalizer 3.0.1
frozenlist 1.3.3
idna 3.4
multidict 6.0.4
numpy 1.24.3
openai 0.27.0
pip 23.1.2
requests 2.28.2
setuptools 65.5.0
tqdm 4.64.1
urllib3 1.26.14
yarl 1.8.2
Funktionen
Eine Funktion ist ein Codeblock, der nur ausgeführt wird, wenn er aufgerufen wird. Man kann Daten, sogenannte Parameter, an eine Funktion übergeben.
Als Ergebnis kann eine Funktion Daten zurückgeben.
Erstellen einer Funktion
In Python wird eine Funktion mit dem Schlüsselwort def definiert :
def meine_funktion(werteins, wertzwei):
"""
Diese Funktion soll bei Aufruf einen Gruß ausgeben. Damit wir jederzeit schnell herausfinden, was die Funktion tun soll, schreiben wir die Kommentare direkt unter die Definition und noch vor den Code der ausgeführt werden soll.
:param werteins: Beschreibung des ersten Parameters
ggf. erweiterte Infos
:param wertzwei: Beschreibung des zweiten Parameters
ggf. erweiterte Infos
"""
print("Hallo aus einer Funktion")
Aufrufen einer Funktion
Um eine Funktion aufzurufen, verwendet man den Funktionsnamen gefolgt von Klammern und einem Doppelpunkt. Der auszuführende Code ist eingerückt.
def meine_funktion():
print("Hallo aus einer Funktion")
meine_funktion()
Argumente
Informationen können als Argumente an Funktionen übergeben werden.
Argumente werden nach dem Funktionsnamen in Klammern angegeben. Man kann beliebig viele Argumente hinzufügen. Diese sind einfach durch ein Komma zu trennen.
Das folgende Beispiel hat eine Funktion mit einem Argument (vorname). Wenn die Funktion aufgerufen wird, übergeben wir einen Vornamen, der innerhalb der Funktion verwendet wird, um den vollständigen Namen auszugeben:
def meine_fuktion(vorname):
print(vorname + " Maier")
meine_fuktion("Emil")
meine_fuktion("Emilia")
meine_fuktion("Franz")
Argumente werden in Python-Dokumentationen oft zu args abgekürzt .
Parameter oder Argumente?
Die Begriffe Parameter und Argument können für dasselbe verwendet werden: Informationen, die an eine Funktion übergeben werden.
Aus Sicht einer Funktion:
Ein Parameter ist die Variable, die in der Funktionsdefinition in Klammern aufgeführt ist.
Ein Argument ist der Wert, der an die Funktion gesendet wird, wenn diese aufgerufen wird.
Anzahl der Argumente
Standardmäßig muss eine Funktion mit der richtigen Anzahl an Argumenten aufgerufen werden. Das heißt, wenn eine Funktion zwei Argumente erwartet, muss man die Funktion auch mit zwei Argumenten aufrufen. Nicht mehr und nicht weniger.
Diese Funktion erwartet 2 Argumente und erhält 2 Argumente:
def meine_funktion(vorname, nachname):
print(vorname + " " + nachname)
meine_funktion("Emil", "Maier")
Aufgabe
Baue eine Funktion mit zwei Parametern und rufe die Funktion anschließend mit nur einem Argument bzw. mit drei Argumenten auf.
Beliebige Argumente, *args
Wenn man nicht weiß, wie viele Argumente an die Funktion übergeben werden, fügt man ein * vor dem Parameternamen in der Funktionsdefinition hinzu.
Auf diese Weise erhält die Funktion ein Tupel von Argumenten und kann entsprechend auf die Elemente zugreifen:
def meine_funktion(*tiere):
print("Das kleinste Tier ist " + tiere[2])
meine_funktion("Pferd", "Elefant", "Hund")
Beliebige Argumente werden in Python-Dokumentationen oft zu *args abgekürzt .
Aufgabe
Übergib die Liste mit den 8 Automarken aus dem letzten Unterrichtsblock als Argument an eine Funktion und lasse dir über die Funktion das zweite Element der Liste ausgeben.
Prüfe, ob dafür eine Schleife notwendig ist und wende diese ggf. mit an.
Schlüsselwortargumente
Man kann Argumente auch mit der Syntax „Schlüssel = Wert“ senden. Auf diese Weise spielt die Reihenfolge der Argumente keine Rolle.
def meine_funktion(tier1, tier2, tier3):
print("Das kleinste Tier ist " + tier3)
my_function(tier1 = "Pferd", tier2 = "Elefant", tier3 = "Hund")
Der Ausdruck „Schlüsselwortargumente“ wird in Python-Dokumentationen häufig zu „kwargs“ abgekürzt.
Beliebige Schlüsselwortargumente, **kwargs
Wenn man nicht weiß, wie viele Schlüsselwortargumente an die Funktion übergeben werden sollen, fügt man zwei Sternchen ** vor dem Parameternamen in der Funktionsdefinition ein:
Auf diese Weise erhält die Funktion ein Dictionary mit Argumenten und kann entsprechend auf die Elemente zugreifen:
def meine_funktion(**kind):
print("Sein Nachname ist " + kid["nachname"])
meine_funktion(vorname = "Tobias", nachname = "Maier")
Beliebige Schlüsselwort-Argumente werden in Python-Dokumentationen oft mit **kwargs abgekürzt .
Standardparameterwert
Das folgende Beispiel zeigt, wie ein Standardparameterwert verwendet wird. Wenn man die Funktion ohne Argument aufruft, verwendet diese den Standardwert:
def meine-funktion(bundesland = "Bayern"):
print("Ich komme aus " + bundesland)
my_function("NRW")
my_function("Sachsen")
my_function()
my_function("Hessen")
Übergabe einer Liste als Argument
Man kann beliebige Datentypen von Argumenten an eine Funktion senden (Strings, Zahl, Liste, Dictionary usw.) Diese werden innerhalb der Funktion als derselbe Datentyp behandelt.
Wenn man beispielsweise eine Liste als Argument sendet, ist diese immer noch eine Liste, wenn sie die Funktion erreicht:
def meine_funktion(essen):
for x in essen:
print(x)
obst = ["Apfel", "Banane", "Beeren"]
my_function(obst)
Rückgabewerte
Um eine Funktion einen Wert zurückgeben zu lassen, verwendet man die return Anweisung:
def meine_funktion(x):
return 5 * x
print(meine_funktion(3))
print(meine_funktion(5))
print(meine_funktion(9))
Die pass-Anweisung
funktion Definitionen dürfen nicht leer sein. Wenn man jedoch aus irgendeinem Grund eine funktion Definition ohne Inhalt hat, fügt man die pass-Anweisung hinzu, um eine Fehlermeldung zu vermeiden.
def meine_funktion():
pass
Rekursion
Python akzeptiert auch Funktionsrekursion, was bedeutet, dass eine definierte Funktion sich selbst aufrufen kann.
Rekursion ist ein gängiges Mathematik- und Programmierkonzept. Es bedeutet, dass eine Funktion sich selbst aufruft. Dies hat den Vorteil, dass man Daten durchlaufen kann, um zu einem Ergebnis zu gelangen.
Der Entwickler sollte bei der Rekursion sehr vorsichtig sein, da es sehr leicht passieren kann, dass er eine Funktion schreibt, die niemals beendet wird oder übermäßig viel Speicher oder Prozessorleistung verbraucht. Bei korrekter Schreibweise kann die Rekursion jedoch ein sehr effizienter und mathematisch eleganter Programmieransatz sein.
In diesem Beispiel ist tri_recursion() eine Funktion, die so definiert wurde, dass sie sich selbst aufruft („recurse“). Wir verwenden die k-Variable als Zahl, die bei jeder Rekursion um ( -1 ) dekrementiert wird. Die Rekursion endet, wenn die Bedingung nicht größer als 0 ist (dh wenn sie 0 ist).
Für einen neuen Entwickler kann es einige Zeit dauern, herauszufinden, wie genau das funktioniert. Der beste Weg, dies herauszufinden, besteht darin, es zu testen und zu ändern.
Rekursionsbeispiel
def versuch_rekursion(k):
if(k > 0):
ergebnis = k + versuch_rekursion(k - 1)
print(ergebnis)
else:
ergebnis = 0
return ergebnis
print("\n\nRekursionsbeispiel Ergebnisse")
versuch_rekursion(6)
Aufgabe
Baue o.g. Codes nach und übe die Anwedung von Funktionen. Baue eine Funktion, in welcher das Paket „camelcase“ zum einsatz kommt.
Aufgabe 1: Fakultätsberechnung
Schreiben Sie eine rekursive Funktion namens berechne_fakultät, die eine positive ganze Zahl n als Parameter entgegennimmt und die Fakultät dieser Zahl zurückgibt. Die Fakultät einer Zahl n ist das Produkt aller positiven ganzen Zahlen kleiner oder gleich n. Zum Beispiel ist die Fakultät von 5 (bezeichnet als 5!) gleich 5 * 4 * 3 * 2 * 1 = 120.
Beispiel einer Fakultät:
Beispiel: Die Fakultät von 5 (mathematisch geschrieben als 5!) wird wie folgt berechnet: 5 x 4 x 3 x 2 x 1 = 120. Demnach lautet die Lösung hier: 5! = 120.
Hinweis: Denken Sie daran, dass die Fakultät von 0 als 1 definiert ist. Dies wird oft als Basisfall für die rekursive Lösung verwendet.
Aufgabe 2: Fibonacci-Zahlenreihe
Schreiben Sie eine rekursive Funktion namens fibonacci, die eine Zahl n als Parameter entgegennimmt und das n-te Element der Fibonacci-Reihe zurückgibt. In der Fibonacci-Reihe ist das erste und zweite Element jeweils 1, und jedes folgende Element ist die Summe der beiden vorhergehenden Elemente. Zum Beispiel sind die ersten zehn Elemente der Fibonacci-Reihe: 1, 1, 2, 3, 5, 8, 13, 21, 34 und 55.
Recherchieren Sie vorher zur Fibonacci-Folge auf Google
Hinweis: Für n <= 1 soll die Funktion direkt n zurückgeben, da die ersten beiden Zahlen der Fibonacci-Reihe durch Definition 0 und 1 sind. Dieser Fall dient als Basisfall für Ihre rekursive Lösung.
Eingebaute Funktionen in Python
Python verfügt auch über eingebaute Funktionen.
| Funktion | Beschreibung |
|---|---|
abs() | Gibt den absoluten Wert einer Zahl zurück |
all() | Gibt true zurück, wenn alle Elemente in einem iterbaren Objekt wahr sind |
any() | Gibt true zurück, wenn ein Element in einem iterbaren Objekt wahr ist |
ascii() | Gibt eine lesbare Version eines Objekts zurück. Ersetzt Nicht-ASCII-Zeichen durch Escape-Zeichen |
bin() | Gibt die binäre Version einer Nummer zurück |
bool() | Gibt den Booleschen Wert des angegebenen Objekts zurück |
bytearray() | Gibt eine Reihe von Bytes zurück |
bytes() | Gibt ein Bytes -Objekt zurück |
callable() | Gibt true zurück, wenn das angegebene Objekt aufrufbar ist, ansonsten falsch |
chr() | Gibt ein Zeichen aus dem angegebenen Unicode -Code zurück. |
classmethod() | Umwandelt eine Methode in eine Klassenmethode |
compile() | Gibt die angegebene Quelle als Objekt zurück, die zur Ausführung bereitgestellt werden kann |
complex() | Gibt eine komplexe Nummer zurück |
delattr() | Löscht das angegebene Attribut (Eigenschaft oder Methode) aus dem angegebenen Objekt |
dict() | Gibt ein Wörterbuch zurück (Array) |
dir() | Gibt eine Liste der Eigenschaften und Methoden des angegebenen Objekts zurück |
divmod() | Gibt den Quotienten und den Rest zurück, wenn Argument1 durch Argument2 geteilt wird2 |
enumerate() | Nimmt eine Sammlung (z. B. ein Tupel) und gibt sie als Aufzählung von Objekt zurück |
eval() | Bewertet und führt einen Ausdruck aus. Als Beispiel die Anwendung von eval() auf einen String: eval("print(100)") gibt 100 aus |
exec() | Führt den angegebenen Code (oder Objekt) aus |
filter() | Verwenden Sie eine Filterfunktion, um Elemente in einem iterbaren Objekt auszuschließen |
float() | Gibt eine schwimmende Punktzahl zurück |
format() | Formatiert einen bestimmten Wert |
frozenset() | Gibt ein Frozenset -Objekt zurück |
getattr() | Gibt den Wert des angegebenen Attributs (Eigenschaft oder Methode) zurück |
globals() | Gibt die aktuelle globale Symboltabelle als Wörterbuch zurück |
hasattr() | Gibt true zurück, wenn das angegebene Objekt das angegebene Attribut (Eigenschaft/Methode) hat |
hash() | Gibt den Hash -Wert eines bestimmten Objekts zurück |
help() | Führt das integrierte Hilfesystem aus |
hex() | Konvertiert eine Zahl in einen hexadezimalen Wert |
id() | Gibt die ID eines Objekts zurück |
input() | Benutzereingabe zulassen |
int() | Gibt eine Ganzzahlnummer zurück |
isinstance() | Gibt true zurück, wenn ein bestimmtes Objekt eine Instanz eines bestimmten Objekts ist |
issubclass() | Gibt true zurück, wenn eine bestimmte Klasse eine Unterklasse eines bestimmten Objekts ist |
iter() | Gibt ein Iteratorobjekt zurück |
len() | Gibt die Länge eines Objekts zurück |
list() | Gibt eine Liste zurück |
locals() | Gibt ein aktualisiertes Wörterbuch der aktuellen lokalen Symboltabelle zurück |
map() | Gibt den angegebenen Iterator mit der angegebenen Funktion zurück, die auf jedes Element angewendet wird |
max() | Gibt den größten Artikel in einem iterablen zurück |
memoryview() | Gibt ein Speicheransichtsobjekt zurück |
min() | Gibt den kleinsten Gegenstand in einem iterablen zurück |
next() | Gibt den nächsten Artikel in einem iterablen zurück |
object() | Gibt ein neues Objekt zurück |
oct() | Konvertiert eine Zahl in ein Oktal |
open() | Öffnet eine Datei und gibt ein Dateiobjekt zurück |
ord() | Konvertieren Sie eine Ganzzahl, die den Unicode des angegebenen Zeichens darstellt |
pow() | Gibt den Wert von x an die Kraft von y zurück |
print() | Drucke zum Standardausgabergerät |
property() | Bekommt, setzt, löscht eine Eigenschaft |
range() | Gibt eine Abfolge von Zahlen ab 0 und in Schritten um 1 zurück (standardmäßig). |
repr() | Gibt eine lesbare Version eines Objekts zurück |
reversed() | Gibt einen umgekehrten Iterator zurück |
round() | Rundet eine Zahlen |
set() | Gibt ein neues Set -Objekt zurück |
setattr() | Legt ein Attribut (Eigenschaft/Methode) eines Objekts fest |
slice() | Gibt ein Slice -Objekt zurück |
sorted() | Gibt eine sortierte Liste zurück |
staticmethod() | Umwandelt eine Methode in eine statische Methode |
str() | Gibt ein String -Objekt zurück |
sum() | Fasst die Gegenstände eines Iterators zusammen |
super() | Gibt ein Objekt zurück, das die übergeordnete Klasse darstellt |
tuple() | Gibt ein Tupel zurück |
type() | Gibt den Typ eines Objekts zurück |
vars() | Gibt die __Dict__ -Eigenschaft eines Objekts zurück |
zip() | Gibt einen Iterator von zwei oder mehr Iteratoren zurück |
Aufgabe
1 Hallo Welt Funktion
Schreiben Sie eine Funktion namens hallo_welt, die beim Aufruf „Hallo Welt!“ auf dem Bildschirm ausgibt und bei der das Modul „camelcase“ zum Einsatz kommt.
2 Additionsfunktion
Schreiben Sie eine Funktion namens addiere, die zwei Zahlen als Parameter entgegennimmt und ihre Summe zurückgibt.
3 Flächenberechnung
Schreiben Sie eine Funktion namens berechne_fläche, die die Länge und Breite eines Rechtecks als Parameter entgegennimmt und die Fläche des Rechtecks zurückgibt.
4 Temperaturumrechnung mit Rückgabewert
Schreiben Sie zwei Funktionen. Die erste Funktion celsius_zu_fahrenheit soll eine Temperatur in Celsius entgegennehmen und in Fahrenheit umrechnen. Die umgerechnete Temperatur soll zurückgegeben werden. Die zweite Funktion fahrenheit_zu_celsius nimmt die von der ersten Funktion zurückgegebene Temperatur entgegen und rechnet sie zurück in Celsius.
5 Maximalwert-Funktion
Schreiben Sie eine Funktion namens finde_max, die drei Zahlen als Parameter entgegennimmt und die größte Zahl zurückgibt. Schreiben Sie dann eine weitere Funktion drucke_max, die den von finde_max zurückgegebenen Wert entgegennimmt und in einem Satz ausgibt, z.B.: „Die größte Zahl ist 10.“
Aufgaben zur Vorbereitung auf die Kurzarbeit
Aufgabe 1. Begrüßungsfunktion
Schreiben Sie eine Funktion namens begruesse_person, die einen Namen als Parameter entgegennimmt und eine persönliche Begrüßung ausgibt. Der Name soll aus einer Liste von Namen ausgewählt und an die Funktion übergeben werden.
Aufgabe 2: Quadratzahlen-Berechner
Erstellen Sie eine Funktion berechne_quadrat, die eine Zahl entgegennimmt, deren Quadrat berechnet und das Ergebnis zurückgibt. Die Zahl soll aus einer Liste von Zahlen ausgewählt und an die Funktion übergeben werden.
Aufgabe 3: Runden von Dezimalzahlen
Implementieren Sie eine Funktion runde_zahl, die eine Dezimalzahl und die Anzahl der Stellen, auf die gerundet werden soll, als Parameter entgegennimmt. Verwenden Sie die Funktion round(), um die Zahl zu runden. Die Werte sollen aus zwei Listen extrahiert werden.
Aufgabe 4. Umwandlung in String und Verkettung
Schreiben Sie eine Funktion verkette_zahlen, die zwei Zahlen entgegennimmt, beide in Strings umwandelt und sie dann verkettet. Die Zahlen sollen aus einer Liste entnommen werden.
Aufgabe 5. Eingabe und Ausgabe von Daten
Erstellen Sie eine Funktion frage_und_berechne, die den Benutzer auffordert, eine Zahl einzugeben. Die Funktion soll dann das Quadrat dieser Zahl berechnen und ausgeben. Verwenden Sie die input()-Funktion, um die Eingabe zu erhalten.
Bitte beachten Sie, dass die letzte Aufgabe interaktiven Benutzereingaben erfordert und daher in einigen Entwicklungsumgebungen oder beim Kopieren und Einfügen des Codes in Dateien möglicherweise nicht wie erwartet funktioniert.
