IPython notebook angabe-gruppe1-02.ipynb
Arbeitsblatt 2
Erstellungsdatum: 2015-03-17 20:55
Wichtig: Dieses Arbeitsblatt muss mit dem Dateinamen nachname_vorname_matrikelnummer_uebungszahl.ipynb
abgespeichert und zur Abgabe vor der Abgabefrist hochgeladen werden. Die "Übungszahl" ist hierbei optional, und kann für die eigene Übersicht nützlich sein. Hierfür hier oben im IPython Notebook auf den Titel angabe-gruppeN-02
klicken und den Namen eingeben. Sowohl Vor- als auch Nachname bitte ausschließlich in Kleinbuchstaben eingeben -- z.B. mustermann_max_1401567_02
.
Eine korrekte Abgabe besteht aus funktionstüchtigen Codezellen, die von oben nach unten ausgewertet werden können. Zur Überprüfung dessen im Menü: Kernel
→ Restart
auswählen und anschließend mittels Cell
→ Run all
alle Zellen ausführen.
2.1 Abzählen
In den folgenden Beispielen werden verschiedene Iterationen und Abzählungen vorgenommen. Lies sie durch, mach eine Vermutung über das Ergebnis, und dann führe sie aus. Ist etwas unklar, kopiere Teile der Prozedur in eine neue Zelle und führe diesen Teil separat aus. Erkäre was passiert!
(a)
Erklärung:
(b)
Erklärung:
(c)
Erklärung:
(d)
Erklärung:
2.2 Nähester Ort
Georg hat mitten in der Wüste einen Unfall und muss dringend in den nähesten Ort. Er kennt seine Position und die von 4 umliegenden Orten. Wohin ist die Luftlinie am kürzesten?
2.3 Funktionen Plotten
Plotte folgende Funktionen jeweils im Intervall . Wenn für eine gute Darstellung notwendig, schränke den Bereich der y-Achse ein.
(a)
(b)
(c)
(d)
2.4 Gleichungen lösen
Verwende die Programmbibliothek SymPy
um jeweils folgende Gleichungen zuerst mittels Eq(..., ...)
anzugeben und dann nach zu lösen. Anschließend überprüfe die Ergebnisse mittels einsetzen (d.h. substituiere jede Lösung für x
in der jeweiligen Gleichung, e.g. .subs(x, solution[0]).simplify()
):
(a)
(b)
(c)
(d)
2.5 Zungenbrecher
Schreibe ein Programm, das im folgenden Zungenbrecher die Häufigkeit der Buchstaben s
bzw. S
zählt. (Gib die Gesamtsumme aus).
2.6 Typenkonvertierung
Python ist eine "strongly typed" Programmiersprache. Bislang sind schon mehrere Basistypen vorgekommen. Es ist üblicherweise wichtig zu wissen, welchen Typ ein gegebenes Objekt hat (Abfrage mittels Funktion "type()
") und (damit verbunden) was sich damit machen lässt.
Die in Python eingebauten Funktionen: int
, bool
, hex
, oct
, long
, str
, ord
, chr
und float
helfen, zwischen verschiedenen Typen oder Repräsentationen zu wechseln -- sofern dies möglich ist und einen Sinn hat! Lies über diese Funktionen in der Python 2 Dokumentation.
Beispiel:
Aufgabe
Versuche nun die folgenden vier Objekte (x
, l
, k
, z
) mittels der oben erwähnten Funktionen in möglichst viele andere Objekte zu konvertieren. Vermerke dabei jeweils, welcher Typ das ursprüngliche Objekt hat (Abfrage mittels type()
) und mittels welcher Funktionen es sich in welchen Wert und Typ verwandeln ließ.
Überlege auch, welche Funktionen jeweils die identische Abbildung sind bzw. welche jeweils zueinander inverse Operationen sind.
(a)
ursprünglicher Typ: ...
Konvertierung in ... (Typ ...) mittels ...
Konvertierung in ... (Typ ...) mittels ...
...
(b)
ursprünglicher Typ: ...
Konvertierung in ... (Typ ...) mittels ...
Konvertierung in ... (Typ ...) mittels ...
...
(c)
ursprünglicher Typ: ...
Konvertierung in ... (Typ ...) mittels ...
Konvertierung in ... (Typ ...) mittels ...
...
(d)
ursprünglicher Typ: ...
Konvertierung in ... (Typ ...) mittels ...
Konvertierung in ... (Typ ...) mittels ...
...
2.7 Zahlensuche
Suche alle vierstelligen Zahlen, also von 1000 bis 9999, welche durch 17 teilbar und Palindrome sind!
Hinweis: str(x)
konvertiert eine Zahl x
in einen entsprechenden String, dessen Richtung genauso wie bei einer Liste umgedreht werden kann.
2.8 Zahlenakrobatik
und sind zwei berühmte akrobatische Variablen in . Eines ihrer größten Kunststücke ist, dass die Differenz zwischen ihrem Produkt und ihrer Summe genau 99999 ist (d.h. ).
Finde alle Paare mit , wo sie vorkommen.
Idee:
2.9 Mengen (set)
Python's Datentyp "set
" repräsentiert eine ungeordnete Sammlung von Objekten ohne Duplikate. Es unterstützt außerdem Standardmethoden zur Verarbeitung von Mengen. Beobachte das Verhalten der folgenden Codezellen und erkläre, was jeweils passiert.
(a)
Erklärung:
(b)
Erklärung:
(c)
Erklärung:
(d)
Erklärung:
2.10 Python Funktionen
func_a
bis func_d
ist jeweils eine Funktion in Python und jede wird anschließend zweimal aufgerufen.
Erkläre jeweils, was beim Aufruf passiert, welche Werte übergeben werden, und wie die übergebenen Werte zu dem jeweiligen Ergebnis verarbeitet werden.
(a)
Erklärung:
Aufruf:
Übergebene Elemente:
Ablauf:
Erklärung:
Aufruf:
Übergebene Elemente:
Ablauf:
(b)
Erklärung:
Aufruf:
Übergebene Elemente:
Ablauf:
Erklärung:
Aufruf:
Übergebene Elemente:
Ablauf:
(c)
Erklärung:
Aufruf:
Übergebene Elemente:
Ablauf:
Erklärung:
Aufruf:
Übergebene Elemente:
Ablauf:
(d)
Erklärung:
Aufruf:
Übergebene Elemente:
Ablauf:
Erklärung:
Aufruf:
Übergebene Elemente:
Ablauf:
2.11 Interaktiver Plot
Stelle in einem interaktiven Plot dar.
die Variable
die Parameter , und sollen jeweils aus dem Intervall wählbar sein
die Y-Achse im Interval fixiert werden
2.12 Funktionen
Plotte die diskreten Funktionen und für an den Stellen in denselben Plot, in den Farben grün und blau und den Markern "+
" und ".
".
Achte darauf, dass die Darstellung diskrete Punkte sind und mit einem Koordinatenraster hinterlegt werden.
Hinweis: Die folgenden Funktionen aus matplotlib's pyplot API werden nützlich sein: scatter und grid.
2.13 Gleichungssystem 1
Verwende die Programmbibliothek SymPy
um folgendes Gleichungssystem zu lösen:
und überprüfe beide Lösungen durch einsetzen.
Aktiviere Sympy
's Formeldarstellung.
2.14 Gleichungssystem 2
Löse außerdem dieses Gleichungssystem und überprüfe die Lösungen durch Einsetzen: