Scripting
Übungen
Übungsfragen und Aufgaben zu Skriptsprachen, Python, Suche, Datenstrukturen, String-Operationen, Frequenzanalyse, Regex und DFIR.
Übungen
Diese Seite sammelt die wichtigsten Übungsideen aus den Scripting-Unterlagen.
Grundlagen
- Erkläre, was eine Skriptsprache ist.
- Nenne fünf Beispiele für Skriptsprachen.
- Nenne drei Vorteile von Skriptsprachen.
- Nenne drei Nachteile von Skriptsprachen.
- Warum eignet sich Python gut für Automatisierung?
- Was bedeutet dynamische Typisierung?
- Was bedeutet, dass in Python alles ein Objekt ist?
Python Syntax
- Wozu dient die REPL?
- Wie werden Kommentare geschrieben?
- Warum ist Einrückung in Python wichtig?
- Was ist der Unterschied zwischen
==undis? - Welche Werte sind in Python logisch falsch?
- Warum gibt es in Python kein
i++?
Kontrollfluss
Schreibe kleine Programme zu:
if,elif,elsewhilemit Zählerforüber einen Stringformitrangebreakcontinue
Funktionen
- Schreibe eine Funktion
add(a, b). - Schreibe eine Funktion mit Default-Parameter.
- Schreibe eine Funktion, die Quotient und Rest zurückgibt.
- Erkläre, warum mehrere Rückgabewerte in Python praktisch Tupel sind.
- Was gibt eine Funktion ohne
returnzurück?
Übung 1: Listen durchsuchen
Implementiere drei Suchfunktionen:
def linear_search(list_of_numbers, number):
pass
def search_using_in(list_of_numbers, number):
pass
def binary_search(sorted_list_of_numbers, number):
pass
Anforderungen:
Truezurückgeben, wenn die Zahl enthalten istFalsezurückgeben, wenn sie nicht enthalten ist- Binärsuche iterativ implementieren
- Performance mit
timeitmessen - 20.000 Durchgänge vergleichen
Diskussionsfragen:
- Warum braucht Binärsuche eine sortierte Liste?
- Warum ist
inin Python oft schneller als selbst geschriebener Code? - Wann lohnt sich Sortieren vor der Suche?
Lineare Datenstrukturen
- Erkläre
tuple,listundstr. - Welche davon sind veränderlich?
- Was ist Slicing?
- Was bedeutet
s[::-1]? - Warum braucht ein Tupel mit einem Element ein Komma?
- Wie kann man eine Liste als Stack verwenden?
Übung 2: String-Operationen
Satzumkehr
Schreibe eine Funktion:
def reverse_sentence(sentence):
pass
Beispiel:
reverse_sentence("Never gonna give you up.")
Anforderungen:
- Wortreihenfolge umdrehen
- Satz beginnt wieder mit großem Wort
- Satz endet mit Punkt
- Groß- und Kleinschreibung der Wörter sonst beibehalten
Zeichentausch
Schreibe eine Funktion:
def manipulate_string(string):
pass
Regeln:
- Wörter mit weniger als zwei Zeichen bleiben unverändert.
- Wörter mit ungerader Länge tauschen erstes und letztes Zeichen.
- Wörter mit gerader Länge werden in zwei gleich lange Teile getrennt.
- Ausgabe bleibt ein String mit Leerzeichen zwischen den Teilen.
Hash-Datenstrukturen
- Was ist ein Set?
- Warum entfernt ein Set Duplikate?
- Was ist ein frozenset?
- Was ist ein Dictionary?
- Warum müssen Dictionary-Keys hashbar sein?
- Wann verwendet man
items()?
Comprehensions und Generatoren
- Schreibe eine List-Comprehension für Quadratzahlen.
- Schreibe eine Set-Comprehension für alle Buchstaben eines Strings.
- Schreibe eine Dict-Comprehension mit Zahlen als Keys.
- Was macht
yield? - Was bedeutet Lazy Evaluation?
- Warum kann ein Generator speicherschonender sein als eine Liste?
Übung 3: Frequenzanalyse
Schreibe eine Funktion zum Einlesen einer UTF-8-Datei:
def read_text_file(path):
pass
Anforderungen:
- Datei lesen
- Leerzeichen entfernen
- Zeilenumbrüche entfernen
- bereinigten Text zurückgeben
Schreibe eine Funktion zur Analyse:
def analyze_text(text):
pass
Anforderungen:
- absolute Häufigkeit jedes Zeichens zählen
- Groß- und Kleinschreibung ignorieren
- Ergebnis als Dictionary zurückgeben
Zusatz:
- Analysiere
text_to_analyze.txt. - Gib die Ergebnisse sortiert aus.
- Erkläre, warum ein Dictionary für diese Aufgabe passt.
File I/O
- Was macht
open? - Warum ist
withempfehlenswert? - Was ist der Unterschied zwischen
r,w,a,rbundwb? - Warum sollte man Encoding bewusst angeben?
- Was ist der Unterschied zwischen
read()und zeilenweiser Iteration?
Regex
- Was ist ein regulärer Ausdruck?
- Was bedeutet
\d{2,7}? - Was bedeutet
^? - Was bedeutet
$? - Was ist eine Gruppe?
- Was ist der Unterschied zwischen greedy und non-greedy?
- Was liefert
findallmit Gruppen?
DFIR: Ping-Anrufe
Schreibe ein Skript, das call_log.txt analysiert.
Regeln für Angreifer-Nummern:
- Vorwahl beginnt mit
0 - Vorwahl ist fünf oder sechs Ziffern lang
- erlaubte Trenner:
/,//,///,. - dritte Stelle der Nummer ist
1oder4 - Nummer ist acht bis zehn Zeichen lang
Aufgaben:
- Datei lesen.
- Treffer mit Regex finden.
- Nummern auf
Vorwahl/Nummernormalisieren. - Duplikate entfernen.
- Ergebnis sortiert in
attacker_numbers.txtschreiben. - Optional SHA-256-Hash der Ergebnisdatei berechnen.
Mini-Prüfungsfragen
- Warum sind Skriptsprachen gut für Automatisierung?
- Warum ist Python dynamisch, aber stark typisiert?
- Wann nimmt man eine Liste und wann ein Set?
- Warum ist ein Dictionary gut für Frequenzanalyse?
- Warum sollte man Dateien mit
withöffnen? - Warum sind reguläre Ausdrücke für Loganalyse praktisch?
- Was macht ein Hashwert bei Ergebnisdateien nachvollziehbar?
Merksatz
Scripting lernt man am besten durch kleine, echte Aufgaben: Daten rein, Logik anwenden, Ergebnis sauber raus.
Zuletzt aktualisiert: 6. Juni 2026