Aufgabe 02 - Alte Bekannte, neue Sprache
Aufgabe 02 - Alte Bekannte, neue Sprache
Abschnitt betitelt „Aufgabe 02 - Alte Bekannte, neue Sprache“Worum geht es?
Abschnitt betitelt „Worum geht es?“Sie lösen eine Reihe klassischer Programmieraufgaben in Python: Probleme, die in jeder Programmiersprache gestellt werden können und deren Lösungsmuster (Zählen, Summieren, Suchen, Umwandeln) zum Grundwerkzeug jeder Entwicklerin und jedes Entwicklers gehören (siehe Kapitel Einführung in Python). Ziel ist doppelt: Routine mit der Python-Syntax aufbauen und dabei erleben, dass Python für viele dieser Muster besonders knappe Formulierungen anbietet.
Was Sie dafür brauchen
Abschnitt betitelt „Was Sie dafür brauchen“- Kapitel Einführung in Python, insbesondere Funktionen, Listen, Dictionaries und Strings.
- Ihren Spickzettel aus Aufgabe 01, Python und VS Code.
Welche Kompetenzen Sie erwerben und zeigen
Abschnitt betitelt „Welche Kompetenzen Sie erwerben und zeigen“- Sie setzen Kontrollstrukturen, Funktionen und Datenstrukturen sicher zur Problemlösung ein.
- Sie strukturieren Lösungen als Funktionen mit Testaufrufen statt als lose Skriptzeilen.
- Sie vergleichen verschiedene Lösungswege für dasselbe Problem und bewerten sie.
Pädagogische Einordnung
Abschnitt betitelt „Pädagogische Einordnung“- Reproduktion: Grundkonstrukte wiedergeben und auf einfachste Aufgaben anwenden (Teil A).
- Reorganisation und Transfer: bekannte Lösungsmuster auf neue Aufgaben übertragen, Alternativen vergleichen (Teile B und C).
- Reflexion, Problemlösung und Urteilsbildung: ein offenes Problem analysieren, eine eigene Strategie entwerfen und das Ergebnis beurteilen (Teil D).
Arbeitsaufträge
Abschnitt betitelt „Arbeitsaufträge“Die Übung ist auf etwa zwei Stunden ausgelegt; jede Teilaufgabe wird als Funktion mit mindestens zwei Testaufrufen abgegeben. Teil D ist der Expertenteil.
Teil A - Fingerübungen
Abschnitt betitelt „Teil A - Fingerübungen“print_numbers(): gibt die Zahlen 1 bis 20 aus, jede in einer eigenen Zeile.sum_up_to(n): liefert die Summe 1 + 2 + … + n mit einer Schleife. Kontrollwert:sum_up_to(100)ergibt 5050.grade_average(grades): liefert den Durchschnitt einer Notenliste. Entscheiden Sie, was bei einer leeren Liste passiert, und schreiben Sie Ihre Entscheidung als Kommentar über die Funktion.
Teil B - Die Klassiker
Abschnitt betitelt „Teil B - Die Klassiker“fizzbuzz(n): gibt die Zahlen 1 bis n aus; Vielfache von 3 werden durchFizzersetzt, Vielfache von 5 durchBuzz, Vielfache von beiden durchFizzBuzz. Achten Sie auf die Reihenfolge der Prüfungen.caesar(text, shift): verschiebt jeden Buchstaben umshiftPositionen im Alphabet (ausabzwird bei Verschiebung 1bca); andere Zeichen bleiben unverändert. Hilfsmittel:ord()undchr().linear_search(values, target): liefert den Index des ersten Treffers oder-1, und zusätzlich die Anzahl der benötigten Vergleiche als zweiten Rückgabewert (return index, comparisons).
Teil C - Die Python-Art
Abschnitt betitelt „Teil C - Die Python-Art“- Schreiben Sie
grade_averageerneut, diesmal mitsum()undlen()in einer Zeile Funktionsrumpf. - Erzeugen Sie die Liste der Quadratzahlen von 1 bis 20 zweimal: mit einer Schleife und
append, und als List Comprehension[x * x for x in range(1, 21)]. Prüfen Sie mit==, dass beide Listen gleich sind. word_frequency(text): zählt mit einem Dictionary, wie oft jedes Wort in einem Satz vorkommt (text.split()). Lösen Sie dieselbe Aufgabe danach mitcollections.Counter(Dokumentation lesen) und halten Sie den Vergleich in zwei Kommentarzeilen fest.
Teil D - Expertenteil: Caesar knacken
Abschnitt betitelt „Teil D - Expertenteil: Caesar knacken“Ein mit caesar verschlüsselter deutscher Text soll ohne Kenntnis der Verschiebung entschlüsselt werden.
- Schreiben Sie
crack_caesar(ciphertext), das alle 26 möglichen Verschiebungen durchprobiert und alle Kandidaten erzeugt. - Bewerten Sie jeden Kandidaten automatisch: Im Deutschen ist
eder mit Abstand häufigste Buchstabe. Zählen Sie die Buchstabenhäufigkeiten je Kandidat und wählen Sie den Kandidaten, dessen häufigster Buchstabeeist (oder entwickeln Sie ein besseres Kriterium; dokumentieren Sie es). - Testen Sie mit einem selbst verschlüsselten Satz von mindestens 80 Zeichen. Bei welcher Textlänge beginnt Ihr Kriterium zu versagen? Probieren Sie es aus und notieren Sie die Beobachtung.
- Beurteilen Sie in drei Sätzen, was dieses Experiment über die Sicherheit der Caesar-Verschlüsselung aussagt.
Wissenscheck
Abschnitt betitelt „Wissenscheck“- Warum muss bei
fizzbuzzder Fall “durch 3 und durch 5 teilbar” vor den Einzelfällen geprüft werden? - Was liefert
"eins zwei zwei".split()und welchen Typ hat das Ergebnis? - Wie liest sich
[x * x for x in range(1, 21)]als deutscher Satz? - Eine Funktion soll zwei Werte zurückgeben. Wie geht das in Python, und wie nimmt der Aufrufer beide entgegen?
- Welche Entscheidung mussten Sie bei
grade_averagefür die leere Liste treffen, und warum kann man sie nicht “einfach weglassen”?
classics.py (Teile A und B), python_style.py (Teil C) und gegebenenfalls crack.py (Teil D), jeweils mit Funktionen und Testaufrufen.