1. Stunde - Übungen
Logische Ausdrücke, Module
Programmieren Sie eine XOR-Funktion gemäß folgender Tabelle:
A |
B |
A xor B |
False |
False |
False |
False |
True |
True |
True |
False |
True |
True |
True |
False |
Verwenden Sie die Operationen and, or, not und Klammern ().
Lösungshilfe:
Verwenden Sie die folgende Vorlage für das Modul logic.py und ergänzen Sie den Ausdruck ... in Zeile 5.
# Module logic.py def xor(A,B): """Returns the logical exclusive or of A and B""" C=... return C if __name__=='__main__': # Wird das Modul nicht importiert, # sondern mit run gestartet, dann wird dieser Test ausgefuehrt K=((False,False),(False,True),(True,False),(True,True)) print 'A\tB\tA xor B' for k in K: A,B=k[0],k[1] print A,'\t',B,'\t',xor(A,B)
Öffnen Sie einem Editor Ihrer Wahl (xemacs, nedit) und speichern Sie die Datei unter dem Namen logic.py ab. Achten Sie beim Schreiben darauf, dass Sie Tabulatoren (TAB-Taste) und nicht Leerzeichen zur Formatierung verwenden. Das Modul enthält neben der Funktionsdeklaration ein Hauptprogramm, welches zum Test verwendet wird. Die Dokumentation geschieht mit den sogenannten Docstrings, die sich innerhalb der drei Anführungszeichen befindet. In einer for-Schleife werden die möglichen Logik-Kombinationen überprüft. Die Print-Ausgabe wird mit Tabulatoren formatiert. Kommentare werden mit einem Doppelkreuz eingeleitet.
Starten Sie IPython und überprüfen Sie Ihr Programm. Vergleichen Sie das Ergebnis mit der entsprechende scipy-Funktion.
In [1]: from logic import xor In [2]: xor(False,False) Out[2]: False In [3]: xor(True,False) Out[3]: True In [4]: run xor A B A xor B False False False False True True True False True True True False In [5]: help(xor) In [1]: from scipy import logical_xor In [2]: logical_xor(True,True) Out[2]: False
Dictionaries
a)
Programmieren Sie eine Datums-Funktion, die die Zahl eines Monats im Jahr zurückliefert, wobei das Argument ein String (z.B. ’Oktober’) und der Rückgabewert ein Integer sein soll.
b)
Verwenden Sie die String-Methoden .upper() oder .lower() um Groß- und Kleinschreibung zu berücksichtigen.
c)
Programmieren Sie die Inversfunktion (Integer -> String).
Range
Wie lautet der entsprechende range() Ausdruck für folgende Listen?
[1, 3, 5, 7, 9] [5, 8, 11, 14, 17] [19, 18, 17, 16, 15, 14, 13]
Listen und Strings
Schreiben Sie ein Programm, welches eine Textdatei einliest und die darin enthaltenen Wörter entsprechend der Häufigkeit des Auftretens sortiert.
Lösungshilfe: Einlesen einer Datei in einen String s
s=file(’test.txt’).read()
Die Methode .split(arg) zerteilt einen String in eine Liste. Die Methode .count(arg) ermittelt die Häufigkeit. Sortieren gelingt mittels der Methode .sort() (in place).
SciPy Routinen
a)
Welche Subpackages sind im scipy Modul enthalten?
b)
Was für Funktionen enhalten die Subpackages io, ndimage, signal, stats? Nennen Sie jeweils 5 Beispiele
c)
Wie wird der Laplace-Filter berechnet (siehe Sourcecode)