Benutzer-Werkzeuge

Webseiten-Werkzeuge


python:grundlagen:03_funktionen

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Ăśberarbeitung
python:grundlagen:03_funktionen [28.02.2026 15:38] – angelegt larspython:grundlagen:03_funktionen [28.02.2026 17:45] (aktuell) – [DokuWiki – Python Teil 3: Funktionen und main()] lars
Zeile 1: Zeile 1:
-## Baustein 3: Funktionen und saubere Programmstruktur (mit DokuWiki)+[[start|zurĂĽck]] 
 +Python Teil 3: Funktionen und saubere Programmstruktur
  
 Jetzt machen wir aus dem „funktioniert“-Script ein „wartbar“-Script. Traditionell gesagt: Wir ziehen die Kabel in Kanäle statt sie lose hinterm Rack baumeln zu lassen. Jetzt machen wir aus dem „funktioniert“-Script ein „wartbar“-Script. Traditionell gesagt: Wir ziehen die Kabel in Kanäle statt sie lose hinterm Rack baumeln zu lassen.
Zeile 5: Zeile 6:
 --- ---
  
-# 1) Warum Funktionen?+## 1) Warum Funktionen?
  
 **Problem ohne Funktionen:** Alles steht in einer langen Datei, MenĂĽ und Logik vermischen sich. **Problem ohne Funktionen:** Alles steht in einer langen Datei, MenĂĽ und Logik vermischen sich.
Zeile 23: Zeile 24:
  
 --- ---
- +## 2) Dein nächstes Script: `03_funktionen.py`
-# 2) Dein nächstes Script: `03_funktionen.py`+
  
 Kopiere das komplett als neue Datei: Kopiere das komplett als neue Datei:
  
-```python+<file python 03_funktionen.py> 
 +#!/usr/bin/env python3
 # 03_funktionen.py # 03_funktionen.py
 # MenĂĽ-Programm mit Funktionen: Hosts sammeln, Duplikate verhindern, anzeigen, zählen, filtern, sortieren # MenĂĽ-Programm mit Funktionen: Hosts sammeln, Duplikate verhindern, anzeigen, zählen, filtern, sortieren
  
 +# Importieren von Modulen
 import os import os
  
 +"""
 +Funktionen
 +
 +    * Alle Funktionen haben einen Docstring, damit man später weiĂź,
 +        * was sie tun und welche Parameter sie erwarten.
 +        * welche Datentypen sie erwarten und zurĂĽckgeben 
 +          (auch wenn Python das nicht erzwingt).
 +        * was sie tun, ohne den Code lesen zu mĂĽssen.
 +        
 +    * Alle Funktionen haben eine klare Trennung von Ein- und Ausgabe, 
 +      damit man sie später leichter testen und wiederverwenden kann.
 +    * Alle Funktionen haben eine klare Trennung von Logik und Präsentation, 
 +      damit man sie später leichter anpassen und erweitern kann.
 +"""
 +
 +# Funktion zum Normalisieren von Text (z.B. fĂĽr Vergleiche)
 def normalize(text: str) -> str: def normalize(text: str) -> str:
     """Trimmt Leerzeichen und macht alles klein (fĂĽr Vergleiche)."""     """Trimmt Leerzeichen und macht alles klein (fĂĽr Vergleiche)."""
     return text.strip().lower()     return text.strip().lower()
  
 +# Funktion zum Bildschirm löschen (plattformunabhängig)
 def cls() -> None: def cls() -> None:
     os.system("cls" if os.name == "nt" else "clear")     os.system("cls" if os.name == "nt" else "clear")
  
 +# Funktion zum Sammeln von Hostnamen
 def eingaben_sammeln() -> list[str]: def eingaben_sammeln() -> list[str]:
     """Fragt Hosts ab und gibt eine Liste zurĂĽck (Duplikate werden ignoriert)."""     """Fragt Hosts ab und gibt eine Liste zurĂĽck (Duplikate werden ignoriert)."""
Zeile 62: Zeile 82:
     return hosts     return hosts
  
 +# Funktion zum Anzeigen der gesammelten Hosts
 def hosts_anzeigen(hosts: list[str]) -> None: def hosts_anzeigen(hosts: list[str]) -> None:
     cls()     cls()
Zeile 71: Zeile 92:
         print(f"{index} - {host}")         print(f"{index} - {host}")
  
 +# Funktion zum Anzeigen der Anzahl der gesammelten Hosts
 def anzahl_anzeigen(hosts: list[str]) -> None: def anzahl_anzeigen(hosts: list[str]) -> None:
     cls()     cls()
Zeile 77: Zeile 99:
         print("Keine Hosts eingegeben.")         print("Keine Hosts eingegeben.")
  
 +# Funktion zum Filtern der Hosts nach TLD
 def tld_filtern(hosts: list[str]) -> None: def tld_filtern(hosts: list[str]) -> None:
     cls()     cls()
Zeile 93: Zeile 116:
     print(f"\nTreffer: {len(treffer)}")     print(f"\nTreffer: {len(treffer)}")
  
 +# Funktion zum Sortieren der Hosts
 def sortieren(hosts: list[str]) -> None: def sortieren(hosts: list[str]) -> None:
     cls()     cls()
Zeile 104: Zeile 128:
         print(f"{index} - {host}")         print(f"{index} - {host}")
  
 +# Funktion zum Anzeigen des MenĂĽs und Abfrage der Auswahl
 def menue() -> str: def menue() -> str:
     print(     print(
Zeile 114: Zeile 139:
     return input("Wähle eine Option: ").strip()     return input("Wähle eine Option: ").strip()
  
 +# Hauptfunktion, die den Ablauf steuert
 def main() -> None: def main() -> None:
     hosts = eingaben_sammeln()     hosts = eingaben_sammeln()
Zeile 144: Zeile 170:
     input("\nEnter zum Beenden...")     input("\nEnter zum Beenden...")
  
 +# Nur ausfĂĽhren, wenn das Skript direkt gestartet wird (nicht importiert)
 if __name__ == "__main__": if __name__ == "__main__":
     main()     main()
-```+</file>
  
 +<WRAP center round important 60%>
 **Wichtiges neues Konzept:** **Wichtiges neues Konzept:**
 +
 `if __name__ == "__main__":` sorgt dafĂĽr, dass `main()` nur startet, wenn du die Datei direkt ausfĂĽhrst. `if __name__ == "__main__":` sorgt dafĂĽr, dass `main()` nur startet, wenn du die Datei direkt ausfĂĽhrst.
 +</WRAP>
 +
  
 --- ---
  
-# 3) Mini-Ăśbung (Baustein innerhalb Baustein)+## 3) Mini-Ăśbung (Baustein innerhalb Baustein)
  
 FĂĽge eine **neue MenĂĽoption 6** hinzu: „Host hinzufĂĽgen (nachträglich)“. FĂĽge eine **neue MenĂĽoption 6** hinzu: „Host hinzufĂĽgen (nachträglich)“.
Zeile 166: Zeile 197:
 --- ---
  
-4) DokuWiki-Seite (Teil 3) +## Python Teil 3: Funktionen und main()
- +
-## DokuWiki – Python Teil 3: Funktionen und main()+
  
 > Ziel: Code in kleine Bausteine zerlegen, damit er ĂĽbersichtlich, wartbar und erweiterbar wird. > Ziel: Code in kleine Bausteine zerlegen, damit er ĂĽbersichtlich, wartbar und erweiterbar wird.
python/grundlagen/03_funktionen.1772289521.txt.gz · Zuletzt geändert: von lars