15B: Übungen

Die Aufgaben 15A, 15B, und 15C können in beliebiger Reihenfolge bearbeitet werden.

In dieser Lektion geben wir einige Aufgaben mittlerer Größe, die Techniken kombinieren, die wir in früheren Lektionen gelernt haben.

Programmierübung: Forty Below In The Winter
In dieser Übung wirst du einen Temperaturkonverter schreiben, der Werte von Grad Fahrenheit zu Celsius umwandelt, und umgekehrt. Du wirst hierfür die folgenden zwei Formeln benötigen, die die Temperatur von f in Fahrenheit zu der Temperatur von c in Celsius in Beziehung setzt:

\displaystyle{f = c \times \frac{9}{5} + 32}

\displaystyle{c = (f - 32)\times\frac{5}{9}.}

Der Input wird eine Zeichenkette sein, der aus einer Gleitpunktzahl besteht, auf die sofort der Buchstabe F oder C folgt, wie zum Beispiel "13.2C". Du solltest die Zahl zur anderen Temperaturskala konvertieren und den umgewandelten Wert im selben Format ausgeben. Zum Beispiel, wenn die Eingabe "8F" ist, dann sollte die Ausgabe (ungefähr) "-13.333C" betragen, und wenn die Ausgabe "12.5C" ist, dann sollte die Ausgabe "54.5F" sein.

Du kannst die Eingabe für das Programm in die Box unten eingeben.

Programmierübung: Credit Check
Du wurdest von MeisterCard eingestellt, um eine Funktion zu schreiben, die überprüft, ob eine bestimmte Kreditkartennummer zulässig ist. Deine Funktion check(S) sollte eine Zeichenkette (bzw. einen String) S als Input nehmen. Als ersten Schritt sollte die Funktion, wenn der String nicht dem Format "#### #### #### ####" entspricht, bei dem jedes # eine Zahl ist, False ausgeben. Dann, wenn die Summe der Zahlen teilbar durch 10 ist (eine "checksum" Methode), sollte die Prozedur True ergeben, im umgekehrten Fall False. Zum Beispiel, wenn S der String "9384 3495 3297 0123" ist, dann ist, trotz des korrekten Formats, die Summe der Zahlen 72, also solltest du False ausgeben.
Gib Testbefehle wie print(meinefunktion("Test-Argument")) unten ein.

Verwende bitte in der nächsten Übung die Methoden string.split(), das die Leerzeichen eines Wortes entfernt und eine Liste derjenigen Worte ausgibt, die es enthält und  string.lower(), das eine Zeichenkette zu Kleinbuchstaben umwandelt. Zum Beispiel.

  • "Split these words!".split() gibt die Liste aus ["Split", "these", "words!"]
  • "LOWERCase".lower() ergibt "lowercase"

Achtung: split() kann weitere Möglichkeiten akzeptieren, um andere Auftrennungen vorzunehmen, siehe dazu auch die Dokumentation.

Programmierübung: Poetic Analysis
Ein Schriftsteller arbeitet an seinem neuesten Gedicht, Turing and the Machines. Du wurdest eingestellt, um das Wort zu finden, das am öftesten vorkommt. Du kannst die Zeilen des Gedichts abrufen, indem du wiederholt input() aufrufst, und die letzte Zeile enthält die drei Zeichen ###. Alle Zeichen bestehen aus Worten, die durch einzelne Lehrzeichen getrennt werden; es gibt keine Zahlen oder Zeichensetzung. Wandele alle Worte zu Kleinbuchstaben um, und gib das Wort aus, das am öftesten vorkommt (wir garantieren dir, dass es keinen Gleichstand gibt). Zum Beispiel, wenn die Eingabe folgendes ist:

Here is a line like sparkling wine
Line up fast or be the last
###
Dann sollte die Ausgabe sein:

line
da es zweimal vorkommt und kein anderes Wort zweimal vorkommt.

Du kannst die Eingabe für das Programm in die Box unten eingeben.

Nimm an, du hast n Geschmacksrichtungen von Eiscreme und möchtest einen Eisbecher zusammenstellen, der genau k dieser Geschmachsrichtungen enthält. Wie viele unterschiedliche Geschmacksrichtungen sind möglich? Zum Beispiel, wenn n=4 und k=2, gibt es 6 Möglichkeiten:

(1) A und B, (2) A und C, (3) A und D, (4) B und C, (5) B und D, (6) C und D.

(in diesem Beispiel könnten die Geschmacksrichtungen zum Beispiel Aprikose, Blueberry, Chocolade und Dattel sein).

Auf die selbe Art und Weise könntest du 2 Leute aus einer Gruppe von 4 auswählen (Al, Bob, Carol, Di) um ein Komitee zusammenzustellen. Auf wieviele Arten und Weisen kann das Komitee gebildet werden? Die Antwort wäre immer noch 6. Die nächste Aufgabe dreht sich um die Berechnung dieser Zahl.

Programmierübung: Sei Wählerisch
Die Auswahl von Kombinationen von k Dingen aus einer Gesamtmenge von n Dingen ist gleich

\displaystyle{\frac{n}{k}\times\frac{n-1}{k-1}\times\cdots\times\frac{n-k+2}{2}\times\frac{n-k+1}{1}}

Schreibe eine Funktion choose(n, k), die zwei ganze Zahlen n und k nimmt; wir garantieren n>k>0. Die Funktion sollte den Wert ausgeben, der in der Formel oben angegeben ist.

Gib Testbefehle wie print(meinefunktion("Test-Argument")) unten ein.

In der Mathematik wird die Zahl, die du gerade berechnet hast, folgendermaßen geschrieben:

\displaystyle{\binom{n}{k}}

und wird genannt "n choose k." Es gibt viele interessante Fakten über diese Werte, wie zum Beispiel

\displaystyle{\binom{n}{k} = \binom{n}{n-k}} und \displaystyle{\binom{n}{k} = \binom{n}{k-1} + \binom{n-1}{k-1}}

Dies ist das Ende unserer Übung, du kannst weitergehen zu einer anderen Lektion.