Aufgaben
Die Lösung von mindestens zehn Aufgaben ist verpflichtender Bestandteil der Veranstaltung. Bitte senden Sie Ihre Lösungen (Python-Module) jeweils bis Freitag Abend vor der nächsten Vorlesung (nach dem unten jeweils angegebenen Datum, zu dem die Aufgaben gestellt werden) per E-Mail an h.merz@cyberconcepts.de.
Lösungsansätze für die Aufgaben finden Sie unter Beispiele, Hinweise zur Formulierung bestimmter Aufgabenstellungen in Python unter Beispielcode und Tipps.
Installation
- Python 2.6 oder 2.7; ev. Python 3.2 (noch keine Unterstützung für Web Frameworks)
- Twisted 11.0
- Nevow 0.10
- Zope 3 / BlueBream
- Zope 2.12 oder 2.13
- Plone 4
4.4.11
- Fakultät - mit und ohne Rekursion; mit interaktiver Benutzereingabe über eine WSGI Anwendung; mit Fehlerbehandlung
- Klasse Adress-Label, Methode format(): liefert String mit üblichen Informationen (Anrede, Titel, Vorname, Nachname, Straße, PLZ, Ort) mit Zeilenvorschüben; Ausgabeformat entsprechend einem Adressaufkleber auf einem Brief, ohne überflüssige Leerzeilen und -zeichen!
- Verkehrs-Simulation (s. cybertrain Chapter 4) von der funktions-basierten Form in eine objektorientierte Implementierung überführen
18.4.11
- Twisted: ein einfacher Job-Scheduler: Liest Datum/Uhrzeit und Kommando aus einer Datei, startet Kommando zur angegebenen Zeit
2.5.11
- Formular mit Eingabe Personendaten; Realisierung wahlweise als WSGI-Anwendung oder Zope-View, mit Fehlerbehandlung für Geburtsdatum; Ausgabe per print (optional: Speicherung in CSV-Datei)
- Web-"Taschenrechner": Zwei Eingabefelder, drop-down für Operator, Ausgabefeld für Ergebnis, mit WSGI oder mit einem Zope/BlueBream View/Page Template
- Implementierung Fibonacci-Reihe (f(x) = f(x-1)+f(x-2)) mit einer Generatorfunktion (s. cybertrain Chapter 18, Zeile 166)
9.5.11
- Twisted Webserver mit Shutdown-Button + Zeitangabe für das Herunterfahren (absolut oder in der Form "in xx Minuten")
- Formular mit Eingabe Personendaten als Twisted-Anwendung
- Web-"Taschenrechner" als Twisted-Anwendung
- Twisted, Erweiterung twisting.grab: Selektion und Ausgabe von Links auf der abgerufenen Web-Seite mit BeautifulSoup oder lxml
- Darauf aufbauend: Linkliste als Twisted-Webanwendung: Eingabefeld für URL, Auflistung der gefundenen Links als HTML-Seite
- Variante hierzu: Extrahieren der Preisinformation zu einem oder mehreren Produkten aus einer vorgegebenen Produkt-Website, z.B. http://www.geizkragen.de/
- Zope/BlueBream: Adressliste als View (<zope:page ...>) mit einfachem ZPT
16.5.11
- Monatskalender: Aufbau einer verschachtelten Liste im Format (Beispiel für Mai 2011): [[25, 26, 27, 28, 29, 30, 1], [2, 3, 4, 5, ...], ...]
- Darstellung Monatskalender auf Web-Seite, über ein Zope Page Template (ZPT)
- Web-Rechner mit Nevow (zur Verarbeitung von Formular-Variablen s. Tipps)
- Darstellung Monatskalender mit Nevow
- Python Imaging Library (PIL): Skalierung einer Grafik
23.5.11
- Fibonacci-Server mit XML-RPC, Basis BlueBream oder Twisted; fibo(start, end) liefert einen Ausschnitt aus der Fibonacci-Folge
- Client dazu mit Twisted, Eingabe über Kommandozeile oder Web-Formular
- Generierung Adressliste im XML-Format mit ZPT (Basis Zope/BlueBream)
30.5.11
- Zugriff auf MySQL Datenbank: Beispiel für das Absetzen einfacher SQL-Kommandos
- Twisted: Speicherung Personen-/Adressdaten in SQL-Datenbank
- Überarbeitung Twisted-Scheduler: Aufruf Betriebssystem-Kommando mit spawnProcess()
- Summe der ersten 20 Quadratzahlen von Zahlen, die durch 3 teilbar sind, als "Einzeiler" mit einer List Comprehension oder Generator Expression
- Funktion wordCount(text), liefert ein Dictionary im Format {wort: anzahl, ...}, unter Verwendung geeigneter Dictionary-Methoden (s. Mapping Types)
- Mail-Template für personalisierte E-Mails unter Verwendung von Platzhaltern: %(name)s (s. String Formatting) oder $name (s. Template Strings), Füllen mit einem Dictionary
- Aufbau E-Mail-Nachricht mit den üblichen Headern, einem Plain-Text-Teil und einem PDF-Anhang (s. email Package)
- Versand E-Mail (mit Standard-Library, Twisted, Zope 2 oder Zope 3)
- Cookie setzen und abfragen: einfache "Hello World"-Seite mit Datum/Uhrzeit des letzten Besuchs (Technik nach Belieben: CGI, WSGI, Twisted, Zope, ...)
