# 🐍 Python Lernportal: Vom Einsteiger zum Software-Entwickler [![Python](https://img.shields.io/badge/Python-3.10%2B-blue.svg)](https://www.python.org/) [![Tests](https://img.shields.io/badge/Tests-188%20%2F%20188%20Passing-success.svg)](./test_all.py) [![Lehrpfade](https://img.shields.io/badge/Lehrpfade-3%20Pfade%20%7C%2027%20Module-indigo.svg)](./LEHRPLAN.md) [![Gamification](https://img.shields.io/badge/Gamification-Level%201--10%20%7C%2014%20Badges-gold.svg)](./profil.py) [![Live Portal](https://img.shields.io/badge/Live%20Portal-GitHub%20Pages-success.svg)](https://alexander-mueller.github.io/python-oop-lernportal/) > 🌍 **Interaktives Web-Portal:** [https://alexander-mueller.github.io/python-oop-lernportal/](https://alexander-mueller.github.io/python-oop-lernportal/) Willkommen zum interaktiven **Python Lernportal**! 🎉 Dieses Portal ist didaktisch strukturiert, zu 100% **abgeglichen mit dem Informatik-Schulunterricht** ([`LEHRPLAN.md`](./LEHRPLAN.md)) und gliedert sich in **3 strukturierte Lehrpfade** mit **27 aufeinander aufbauenden Modulen**. --- ## 🎮 Entwickler-Pass & Gamification (100% Offline & Lokal) Das Lernportal besitzt ein wissenschaftlich fundiertes Gamification-System (Self-Determination Theory & Octalysis), das **vollständig lokal auf deinem Computer funktioniert**: - 🪪 **Entwickler-Pass im Terminal anzeigen:** ```bash python3 profil.py ``` - 🧪 **Gesamtfortschritt & XP synchronisieren:** ```bash python3 test_all.py ``` - 🏆 **10 Entwickler-Level** (vom *Code-Küken 🐣* bis zur *Software-Architektin 🏆*) und **14 freischaltbare Trophäen**. --- ## 🧭 Die 3 Lehrpfade im Überblick ### 🛣️ Lehrpfad 1: Grundlagen der Programmierung (Prozedural & Datenstrukturen) | Modul | Titel | Themenschwerpunkte | | :--- | :--- | :--- | | **[G01. Taschenrechner](./lehrpfad_1_grundlagen/01_erste_schritte_taschenrechner/)** | **Python als Rechner** | Zahlenarten (`int`, `float`), Grundrechenarten, `//`, `%`, `**`, Rangfolge & `print()` | | **[G02. Variablen & Typen](./lehrpfad_1_grundlagen/02_variablen_und_datentypen/)** | **Datentypen** | Speicherboxen, `int`, `float`, `str`, `bool`, Type Casting & Type Hints | | **[G03. Ein- & Ausgabe](./lehrpfad_1_grundlagen/03_ein_und_ausgabe/)** | **Interaktion** | Tastatureingaben mit `input()`, f-Strings mit Formatierungs-Codes (`{preis:.2f} €`) | | **[G04. Bedingungen](./lehrpfad_1_grundlagen/04_verzweigungen_und_bedingungen/)** | **Entscheidungen** | `if`, `elif`, `else`, Vergleichsoperatoren & Logik (`and`, `or`, `not`) | | **[G05. Schleifen](./lehrpfad_1_grundlagen/05_schleifen_und_wiederholungen/)** | **Wiederholungen** | Zählschleifen mit `for in range()`, Bedingungsschleifen mit `while`, `break`/`continue` | | **[G06. Funktionen](./lehrpfad_1_grundlagen/06_funktionen_und_module/)** | **Modularität** | `def`, `return`, Parameter, Scope & Module (`math`, `random`) | | **[G07. Listen & Sequenzen](./lehrpfad_1_grundlagen/07_listen_und_sequenzen/)** | **Datenstrukturen 1** | Listen erstellen, Indexing, Slicing `[1:4]`, Methoden (`append`, `pop`) & `sum/min/max` | | **[G08. Textverarbeitung](./lehrpfad_1_grundlagen/08_textverarbeitung_und_strings/)** | **String-Methoden** | Unveränderlichkeit, `.strip()`, `.replace()`, `.split()`, `", ".join()` & Textanalyse | | **[G09. Dictionaries & Sets](./lehrpfad_1_grundlagen/09_dictionaries_und_sets/)** | **Datenstrukturen 2** | Key-Value Paare (`{key: val}`), sicheres `.get()`, Mengen (`set`) ohne Duplikate | | **[G10. Comprehensions & Datum](./lehrpfad_1_grundlagen/10_comprehensions_datum_algorithmen/)** | **Vertiefung** | List Comprehensions `[x for x in ...]`, `datetime` & Such-/Sortier-Algorithmen | --- ### 🛣️ Lehrpfad 2: Einstieg in die Objektorientierung (OOP) & Entwickler-Tools | Modul | Titel | Themenschwerpunkte | | :--- | :--- | :--- | | **[00. Fehlersuche](./lehrpfad_2_oop_einstieg/00_fehlersuche_und_grundlagen/)** | **Warm-up & Debugging** | Tracebacks von unten lesen, `IndentationError`, `SyntaxError`, `TypeError` | | **[01. Einstieg in Klassen](./lehrpfad_2_oop_einstieg/01_einstieg_klassen/)** | **Bauplan vs. Objekt** | Klassen definieren, Instanziierung, Punktnotation & Type Hints (`Fahrrad`) | | **[02. Konstruktor & self](./lehrpfad_2_oop_einstieg/02_init_und_self/)** | **Initialisierung & UML** | `__init__`, `self`, Startwerte & UML-Klassendiagramme (`Bankkonto`, `Smartphone`) | | **[03. Methoden & Verhalten](./lehrpfad_2_oop_einstieg/03_methoden_und_verhalten/)** | **Objekt-Interaktion** | Methoden definieren, Rückgabewerte & Duell zweier Objekte (`Rennauto`) | | **[04. Schöne Textausgabe](./lehrpfad_2_oop_einstieg/04_str_und_darstellung/)** | **`__str__` Dunder** | Lesbare `print()`-Ausgabe von Objekten, Kassenzettel (`Warenkorb`) | | **[04b. VS Code Installation](./lehrpfad_2_oop_einstieg/04b_umstieg_vscode/)** | **IDE-Setup** | Installation (Win/Mac/Linux), Plugins (Error Lens, Python), Shortcuts | | **[04c. Git & Versionskontrolle](./lehrpfad_2_oop_einstieg/04c_git_und_versionskontrolle/)** | **Git-Tooling** | Spielstände (Commits) sichern, VS Code Git-Tab, Terminal & Remote Push | | **[05. Objekte kombinieren](./lehrpfad_2_oop_einstieg/05_objekte_kombinieren/)** | **Komposition** | 1:1 und 1:n Beziehungen zwischen Objekten (`Spotify Playlist-Manager`) | | **[06. Mini-Projekt OOP 1](./lehrpfad_2_oop_einstieg/06_abschlussprojekt_tamagotchi/)** | **Tamagotchi Game** | Voll spielbares, interaktives Haustierspiel im Terminal | --- ### 🛣️ Lehrpfad 3: Fortgeschrittenes OOP, Softwarequalität & Desktop-GUIs | Modul | Titel | Themenschwerpunkte | | :--- | :--- | :--- | | **[07. Referenzen & Speicher](./lehrpfad_3_fortgeschrittenes_oop/07_referenzen_und_speicher/)** | **RAM & Zeiger** | Referenzen im RAM, Aliasing (`b = a`), `is` vs. `==` & Familienstammbaum (`Person`) | | **[08. Operator Overloading](./lehrpfad_3_fortgeschrittenes_oop/08_operator_overloading_dunder/)** | **Dunder-Methoden** | Eigene Klassen rechenbar machen mit `__add__`, `__mul__`, `__eq__` (2D-Vektoren) | | **[09. Eigene Unit Tests & TDD](./lehrpfad_3_fortgeschrittenes_oop/09_eigene_unit_tests_schreiben/)** | **Softwarequalität** | Testsuiten schreiben mit `unittest`, `assertEqual`, `assertRaises` & TDD | | **[10. Vererbung & `super()`](./lehrpfad_3_fortgeschrittenes_oop/10_vererbung_und_super/)** | **Inheritance** | Basis- & Kindklassen, DRY-Prinzip, `super().__init__()` & Fahrzeugflotte | | **[11. Polymorphie & Interfaces](./lehrpfad_3_fortgeschrittenes_oop/11_polymorphie_und_interfaces/)** | **Polymorphism** | Duck Typing, abstrakte Basisklassen (`ABC`) & Geometrie-Engine | | **[12. Exceptions & Fehler](./lehrpfad_3_fortgeschrittenes_oop/12_exceptions_und_fehlerbehandlung/)** | **Robustes Coding** | `try-except-else-finally`, `raise`, eigene Exception-Klassen im Banking | | **[13. Datei-Persistenz](./lehrpfad_3_fortgeschrittenes_oop/13_persistenz_json_und_csv/)** | **JSON & CSV** | Dauerhaftes Speichern & Laden: Savegames & Tabellen-Export | | **[14. Desktop-GUIs mit Tkinter](./lehrpfad_3_fortgeschrittenes_oop/14_gui_mit_tkinter/)** | **Tkinter Desktop-Apps** | Echte Fenster, Buttons, Labels, Grid-Layout & MVC-Architektur | | **[15. Parameter & Container](./lehrpfad_3_fortgeschrittenes_oop/15_parameter_und_container/)** | **Dunder-Container** | Variable Argumente (`*args`, `**kwargs`), Unpacking & Container (`len`, `[]`, `in`, `iter`) | | **[16. Master-Abschlussprojekt](./lehrpfad_3_fortgeschrittenes_oop/16_master_abschlussprojekt/)** | **🏆 Meisterstück: PetCare** | Vollständige Desktop-App: MVC, Vererbung, Polymorphie, JSON-Savegames & Tkinter GUI | --- ## 🧪 Wie benutze ich die automatischen Tests? In jedem Kapitelordner liegt eine Datei namens `test_aufgabe.py`. Sie enthält automatische **Unit Tests**, die überprüfen, ob deine Lösung alle Anforderungen erfüllt. ### 1. Einzelnes Kapitel testen Öffne das Terminal in VS Code (`Strg + \``) und führe den Test im jeweiligen Ordner aus: ```bash # Beispiel für Grundlagen G01: cd g01_erste_schritte_taschenrechner python3 test_aufgabe.py ``` ### 2. Testausgabe richtig lesen: - ✅ **`OK`**: Perfekt! Alle Tests sind grün und bestanden. Du erhältst sofort XP und kannst mit dem nächsten Kapitel weitermachen. - ❌ **`FAIL` (AssertionError)**: Dein Code läuft, liefert aber einen falschen Wert zurück (z.B. Rechenfehler oder falsche Bedingung). Lies die letzte Zeile der Fehlermeldung! - 💥 **`ERROR` (Syntax / AttributeError)**: Dein Code hat einen Absturz (z.B. Tippfehler im Funktionsnamen). ### 3. Gesamten Fortschritt aller 27 Kapitel prüfen: Führe im Hauptordner folgenden Befehl aus: ```bash python3 test_all.py ``` Dieser Befehl zeigt dir eine Übersicht über alle Kapitel mit `✅` (bestanden) und `⏳` (noch offen) und aktualisiert deinen Gamification-Pass. --- ## 💡 3 Wichtige Regeln für die Aufgaben 1. **`return` statt `print()`:** Tests prüfen das, was eine Funktion/Methode mit `return` zurückliefert. Ein reines `print()` genügt dem Test nicht! 2. **Exakte Namen:** Die Namen der Funktionen, Methoden und Attribute müssen exakt der Aufgabenstellung entsprechen (`addieren`, nicht `Addieren`). 3. **Fehlermeldungen von unten nach oben lesen:** Ganz unten im Traceback steht immer die genaue Ursache.