Python Lernaufgaben – Nach Themen
Keine Lösungen enthalten. Erst selbst probieren – bei Bedarf gehen wir eine Aufgabe gemeinsam Schritt für Schritt durch.
1. Kleine Python-Programme
- Schreibe ein Programm, das den Nutzer nach seinem Namen fragt und ihn begrüßt.
- Schreibe einen einfachen Taschenrechner: Nutzer gibt zwei Zahlen und eine Rechenart (+,-,*,/) ein, das Ergebnis wird ausgegeben.
- Schreibe ein Programm, das prüft, ob eine eingegebene Zahl eine Primzahl ist.
- Schreibe ein "Zahlen erraten"-Spiel: Das Programm denkt sich eine Zahl zwischen 1-100 aus, der Nutzer rät, das Programm sagt "höher" oder "niedriger".
2. APIs
- Nutze
requests, um Daten vonhttps://jsonplaceholder.typicode.com/userszu holen und die Namen aller Nutzer auszugeben. - Hole dir Wetterdaten von einer kostenlosen API (z.B. Open-Meteo, kein API-Key nötig) und gib Temperatur + Ort aus.
- Baue eine Funktion
hole_zufallswitz(), die vonhttps://official-joke-api.appspot.com/random_jokeeinen zufälligen Witz abruft und formatiert ausgibt. - Erweitere Aufgabe 1: Speichere die abgerufenen Nutzerdaten zusätzlich in einer lokalen JSON-Datei.
Setup: pip install requests
3. Daten verarbeiten
- Gegeben eine Liste von Zahlen: berechne Summe, Durchschnitt, Minimum und Maximum – ohne die eingebauten Funktionen
sum(),min(),max(). - Gegeben eine Liste von Wörtern: finde das längste Wort und zähle, wie oft jeder Anfangsbuchstabe vorkommt.
- Gegeben eine Liste von Dictionaries (z.B. Produkte mit
nameundpreis): filtere alle Produkte über 50€ und sortiere sie nach Preis. - Lies eine CSV-Datei mit Verkaufsdaten ein (Spalten: Datum, Produkt, Menge, Preis) und berechne den Gesamtumsatz pro Produkt.
Tipp für CSV: Modul csv oder pandas.
4. Dateien lesen/schreiben
- Schreibe eine Funktion, die einen Text in eine Datei
notizen.txtschreibt. - Schreibe eine Funktion, die den Inhalt von
notizen.txtliest und zeilenweise ausgibt. - Baue ein kleines "Tagebuch"-Programm: Jeder neue Eintrag wird mit Datum an eine Datei angehängt (nicht überschrieben).
- Schreibe eine Liste von Dictionaries als JSON-Datei (
json.dump) und lies sie anschließend wieder ein (json.load).
5. Fehlerbehandlung
- Schreibe ein Programm, das den Nutzer eine Zahl eingeben lässt. Fängt den Fehler ab, falls keine gültige Zahl eingegeben wird, und fragt erneut.
- Baue eine Funktion
sichere_division(a, b), die eine Division durchführt und bei Division durch 0 eine sinnvolle Fehlermeldung statt eines Absturzes zurückgibt. - Schreibe ein Programm, das eine Datei öffnet – fange den Fehler ab, falls die Datei nicht existiert, und gib eine verständliche Meldung aus.
- Baue eine eigene Exception-Klasse
UngueltigesAlterErrorund wirf sie, wenn ein eingegebenes Alter negativ ist.
6. Funktionen und Klassen
- Schreibe eine Funktion
ist_palindrom(text), die prüft, ob ein Wort rückwärts gelesen gleich ist (z.B. "anna"). - Erstelle eine Klasse
Automitmarke,baujahrund einer Methodealter(), die berechnet, wie alt das Auto ist (aktuelles Jahr - Baujahr). - Erstelle eine Klasse
Warenkorb, die Produkte (Name + Preis) hinzufügen, entfernen und den Gesamtpreis berechnen kann. - Erstelle eine Klasse
Mitarbeiterund eine abgeleitete KlasseManager, die zusätzlich eine Liste von Teammitgliedern verwaltet.
7. Listen/Dictionaries
- Entferne alle doppelten Werte aus einer Liste (ohne
set()zu benutzen). - Drehe eine Liste um, ohne
.reverse()oder[::-1]zu benutzen. - Gegeben zwei Listen (Namen, Alter): baue daraus ein Dictionary
{name: alter}(Tipp:zip()). - Gruppiere eine Liste von Wörtern nach ihrer Länge in einem Dictionary, z.B.
{3: ["Hut", "Bus"], 5: ["Apfel"]}.
8. Einfache Algorithmen
- Implementiere Bubble Sort, um eine Liste von Zahlen zu sortieren.
- Implementiere eine binäre Suche in einer sortierten Liste.
- Schreibe eine Funktion, die die Fibonacci-Folge bis zur n-ten Zahl berechnet.
- Schreibe eine Funktion, die prüft, ob zwei Wörter Anagramme sind (gleiche Buchstaben, andere Reihenfolge).
- Schreibe eine rekursive Funktion, die die Fakultät einer Zahl berechnet (
5! = 5*4*3*2*1).
9. Datenbanken
Setup: SQLite ist in Python bereits eingebaut (import sqlite3), kein separater Server nötig.
- Erstelle eine SQLite-Datenbank mit einer Tabelle
personen(id, name, alter). - Schreibe eine Funktion
person_hinzufuegen(name, alter), die einen neuen Eintrag speichert. - Schreibe eine Funktion
alle_personen_anzeigen(), die alle Einträge aus der Tabelle ausliest und ausgibt. - Erweitere um
person_loeschen(id)undperson_aktualisieren(id, neuer_name). - Schwerer: Baue eine zweite Tabelle
bestellungen, die über eineperson_idmitpersonenverknüpft ist (Fremdschlüssel), und schreibe eine Abfrage, die alle Bestellungen einer bestimmten Person zeigt (JOIN).
10. Kleine Webanwendungen (FastAPI)
Setup: pip install fastapi uvicorn
- Baue eine API mit einem Endpunkt
/hallo/{name}, der{"message": "Hallo, name!"}zurückgibt. - Baue eine kleine "Todo-API":
GET /todos(alle anzeigen),POST /todos(neue Aufgabe hinzufügen) – Daten erstmal nur in einer Python-Liste im Speicher. - Verbinde die Todo-API mit der SQLite-Datenbank aus Aufgabe 9, statt die Daten nur im Speicher zu halten.
- Baue einen Endpunkt
/todos/{id}, um eine einzelne Aufgabe als "erledigt" zu markieren (PATCH oder PUT). - Schwerer: Baue ein einfaches HTML-Frontend (
fetch()im Browser), das die Todo-API anspricht und die Aufgaben anzeigt.
11. Debugging
- Nimm eines deiner obigen Programme und baue absichtlich einen Fehler ein (z.B. falscher Variablenname) – finde ihn anhand der Fehlermeldung im Terminal.
- Nutze
print()-Statements gezielt, um herauszufinden, welchen Wert eine Variable an einer bestimmten Stelle im Code hat ("Print-Debugging"). - Lerne den Python-Debugger kennen: Füge
breakpoint()an einer Stelle im Code ein und probiere die Befehlen(next),c(continue),p variable(Wert anzeigen). - Nimm eine Funktion, die ein falsches Ergebnis liefert (z.B. deine Bubble-Sort-Implementierung mit einem absichtlichen Fehler) und finde den Fehler nur durch Lesen des Codes, ohne ihn auszuführen.
Vorschlag für eine Lernreihenfolge
1. Kleine Python-Programme
2. Funktionen und Klassen
3. Listen/Dictionaries
4. Fehlerbehandlung
5. Dateien lesen/schreiben
6. Einfache Algorithmen
7. Daten verarbeiten
8. Debugging (immer parallel mitlernen!)
9. APIs
10. Datenbanken
11. Kleine Webanwendungen (verbindet alles: API + Datenbank + Fehlerbehandlung)
Hinweis
Bei "kleine Webanwendungen" (Punkt 10) fließt eigentlich alles zusammen, was du vorher geübt hast: Funktionen, Klassen, Fehlerbehandlung, Datenbanken. Das ist ein guter Prüfstein, um zu sehen, was schon sitzt.
Sag mir, mit welchem Thema/welcher Aufgabe du starten willst – dann gehen wir sie zusammen Schritt für Schritt durch.