Teil 12: Challenges

Lernziele
  • Ein grösseres Programm in Teilaufgaben zerlegen
  • Alles bisher Gelernte kombinieren: Schleifen, Verzweigungen, Funktionen, Listen, Strings
  • Ein Programm mit selbst gewählten Testfällen prüfen
  • Den eigenen Code lesbar gestalten und kommentieren

Keine neuen Befehle. Diese Challenges bauen auf allem auf, was du kennst.

Challenges

Die folgenden drei Aufgaben sind grösser als alles bisher. Arbeite in Schritten: Zerlege die Aufgabe zuerst in Teile, schreibe jeden Teil einzeln und teste ihn, bevor du weitergehst.

Vorgehen bei grösseren Programmen

Schreibe zuerst auf Papier, welche Schritte das Programm machen muss. Baue dann eine Funktion nach der anderen und teste jede sofort mit einem Beispiel. Erst wenn alle Teile funktionieren, setzt du sie zusammen. Wer alles auf einmal tippt, sucht am Schluss stundenlang den Fehler.

Challenge 1: Caesar-Verschlüsselung

Bei der Caesar-Verschlüsselung wird jeder Buchstabe um eine feste Anzahl Stellen im Alphabet verschoben. Mit Verschiebung 3 wird aus A ein D, aus B ein E und aus Z wieder ein C.

Aufgabe 12.1

Schreibe die Funktion verschluesseln(text, k), die jeden Buchstaben um k Stellen verschiebt. Zeichen, die keine Buchstaben sind, bleiben unverändert.

PythonLoading editor…
Aufgabe 12.2

Schreibe die passende Funktion entschluesseln(text, k). Prüfe, ob entschluesseln(verschluesseln("HALLO", 3), 3) wieder HALLO ergibt.

PythonLoading editor…
Aufgabe 12.3

Baue ein kleines Programm darum herum: Der Benutzer wählt, ob er ver- oder entschlüsseln will, gibt den Text und die Verschiebung ein und erhält das Ergebnis.

PythonLoading editor…

Challenge 2: Mastermind

Der Computer wählt zufällig vier Farben aus einer Liste, Wiederholungen erlaubt. Der Spieler rät. Nach jedem Versuch meldet das Programm, wie viele Farben an der richtigen Stelle stehen und wie viele zwar vorkommen, aber am falschen Platz.

Aufgabe 12.4

Erzeuge den geheimen Code als Liste aus vier zufälligen Farben. Verwende die Farben rot, gruen, blau, gelb, schwarz und weiss.

PythonLoading editor…
Aufgabe 12.5

Schreibe die Funktion auswerten(code, tipp), die zurückgibt, wie viele Farben richtig platziert sind und wie viele nur enthalten sind.

PythonLoading editor…
Aufgabe 12.6

Baue das Spiel fertig: zehn Versuche, nach jedem Versuch die Auswertung, am Schluss eine Meldung über Sieg oder Niederlage.

PythonLoading editor…

Challenge 3: Passwörter

Aufgabe 12.7

Schreibe die Funktion ist_sicher(passwort), die prüft, ob ein Passwort mindestens acht Zeichen lang ist und mindestens einen Grossbuchstaben, einen Kleinbuchstaben und eine Ziffer enthält.

PythonLoading editor…
Aufgabe 12.8

Erweitere dein Programm so, dass es dem Benutzer sagt, welche Regel verletzt wurde, und so lange nachfragt, bis das Passwort sicher ist.

PythonLoading editor…
Aufgabe 12.9

Speichere mehrere Benutzernamen und Passwörter in zwei Listen. Schreibe eine Anmeldung, die Namen und Passwort prüft und höchstens drei Versuche zulässt.

PythonLoading editor…

Weitere Aufgaben

Zusatzaufgabe 12.10

Schreibe ein Programm, das eine Caesar-Verschlüsselung knackt, ohne den Schlüssel zu kennen. Probiere alle 26 Verschiebungen durch und gib alle Ergebnisse aus. Woran erkennst du das richtige?

PythonLoading editor…
Zusatzaufgabe 12.11

Programmiere Vier gewinnt für zwei Personen. Verwende das Spielbrett aus Teil 9. Das Programm fragt abwechselnd nach einer Spalte, lässt den Stein hineinfallen und prüft nach jedem Zug, ob jemand gewonnen hat.

PythonLoading editor…
Zusatzaufgabe 12.12

Erweitere Mastermind um eine Statistik: Wie viele Versuche brauchst du im Schnitt? Lass den Computer hundertmal zufällig raten und werte aus.

PythonLoading editor…