Python Coding-Kata: Weihnachtsbaum
ASCII-Art Weihnachtsbaum: Einsteiger Fingerübung zu Kontrollstrukturen, Wiederholungsstrukturen und Operatoren in Python: Ein ASCII-Art Weihnachtsbaum soll auf der Konsole ausgegeben und geschmückt werden.
ASCII-Art Weihnachtsbaum: Einsteiger Fingerübung zu Kontrollstrukturen, Wiederholungsstrukturen und Operatoren in Python: Ein ASCII-Art Weihnachtsbaum soll auf der Konsole ausgegeben und geschmückt werden.
Ein zentrales Konzept der objektorientierten Programmierung ist die Polymorphie: die Vielgestalt von Objekten. Es ermöglicht über Instanztypen das Verhalten eines Objekts festzulegen, während der Typ der Referenz festlegt, welche Member erreichbar sind. Objekte sind so flexibel über unterschiedliche Referenzen wiederverwertbar, ohne gecastet werden zu müssen.
Listen stellen eine mächtige und flexible Objektsammlung in Python dar. Der Artikel zeigt, wie Elemente erzeugt, verändert, gelöscht und ausgegeben werden.
Mit Sets bietet Python einen Objektsammlungstyp, der dafür sorgt, dass jedes Element einzigartig ist. Die verfügbaren Methoden der set-Klasse werden in diesem Artikel an Beispielen vorgestellt.
Neben Methoden und Instanzvariablen (Attributen), die das Verhalten und den Zustand einzelner Objekte speichern und verändern gibt es in der objektorientierten Programmierung auch Verhalten und Zustand, der einen gemeinsamen Zustand aller Objekte einer Klasse betrifft. Solche Klassenmethoden und Klassenvariablen werden in der OOP statisch genannt. Dieser Artikel beschreibt, wie sie in Python implementiert werden.
Es soll ein Webcrawler programmiert werden, der den eigenen Internetauftritt nach dort veröffentlichten E-Mail-Adressen durchsucht. Für die betroffenen Besitzer der E-Mail-Konten sollen so Awareness-Trainings gegen Social-Engineering-Angriffe angeboten werden.
Ein vereinfachtes Pacman-Spiel soll objektorientiert erweitert werden. Übungsaufgaben zum Thema Objektorientierte Programmierung, Objektbeziehungen, UML-Klassendiagramm, Implementierung in Python.
Wer gut änderbaren Code programmieren will, der versteckt Implementierungsdetails wie den Zustand von Objekten. Veröffentlicht wird nur, was wirklich benötigt wird. In Python ist es nicht ganz einfach (und eher unüblich), den Rest wegzukapseln. Aber wie lässt sich Kapselung in Python umsetzen?
In der realen Welt trifft man häufig auf Dinge, die ein identisches Verhalten aber unterschiedliche Eigenschaften haben. Objektorientierte Programmierung hilft dabei, Einheiten zu modellieren, die über ein gemeinsames Verhalten bei unterschiedlichen Zuständen verfügen.
Eine Variable auf der einen Seite. Eine Funktion auf der anderen Seite. Viele Probleme lassen sich so darstellen. Manchmal ist es aber gerade die Verknüpfung von beidem (die Objektorientierung), die die Programmierung erstaunlich einfach macht. Am Beispiel einer Planetensimulation mit Hilfe von Pygame soll das Konzept der Objektorientierten Programmierung greifbar gemacht werden.
Wir wollen uns jetzt im Kreis drehen: Ziel definieren – umsetzen – aufräumen. In kleinen Schritten. So lange, bis das Programm fertig ist. Diese Technik nennt sich Testgetriebene Entwicklung, dazu benötigen wir das Testframework `pytest` und wenige Minuten Zeit. Nebenbei lernen wir auch noch Coding-Conventions kennen.
Häufig wollen wir Werte nicht in einzelnen Variablen speichern, sondern als zusammenhängende Struktur. Immer dann, wenn wir Key-Value-Beziehungen haben (wir also über einen bestimmten Namen auf einen Wert zugreifen wollen) sind Dictionaries die Objektsammlung der Wahl.
Komplexe Probleme lassen sich am besten lösen, in dem sie in kleine Einheiten aufgeteilt werden, die jeweils ein Teilproblem lösen. Neben den Suites stellen in Python Funktionen die wesentliche Struktur dar, um die Wiederverwertbarkeit, Wartbarkeit und Änderbarkeit von Code sicherzustellen. Hier geht es um Positions- und Keyword-Argumente, Parameter, Defaultwerte, Dokumentation und all‘ die anderen Grundlagen von Funktionen.
Wer die Wahl hat, hat die Qual: mit den alternativen Kontrollstrukturen (If-Statements) halten die Suites (Einrückungen) erstmals Einzug in Python. Und die Enttäuschung, weil Mehrfachauswahlen in Python recht umständlich realisiert werden müssen.
Wer die Wahl hat, hat die Qual: mit den alternativen Kontrollstrukturen (If-Statements) halten die Suites (Einrückungen) erstmals Einzug in Python. Und die Enttäuschung, weil Mehrfachauswahlen in Python recht umständlich realisiert werden müssen.
s gibt eine ganze Reihe Operatoren für Zahlen in Python: die aritmetischen Operatoren, Vergleichsoperatoren, Zuweisungsoperatoren, bitweise Operatoren… Und dann gibt es noch die Ausführungsreihenfolge. Was in aller Welt ergibt denn `zahl = 2**4-4%3>0b100<<2`?!?
Zahlen, Zeichenketten, Wahrheitswerte: welche Datentypen bietet Python an? Der Schwerpunkt hier liegt auf den numerischen Typen für Gleitkomma- und Ganzzahlen: ist `0b1` eine gültige Zahl und `1e1`? Und: warum in aller Welt ist das hier `False`: `0.1 + 0.2 == 0.3`?!?
Installation von Python3 und PIP sowie setzen der PATH-Variablen
Wieviel Energie benötigen wir bei 130 km/h mehr als bei 100 km/h? Um wie viel sparsamer ist ein Kleinwagen als ein Van? Python-Fingerübung für Einsteiger mit Kontrollstrukturen, Wiederholungsstrukturen, einfacher Ein- und Ausgabe.