Globale Verständnisfragen

Zum Abschluss dieses Lernmoduls wollen wir noch einmal die wichtigsten Erkenntnisse und Informationen, die Sie aus diesem Lernmodul mitnehmen sollen, mit einigen zusammenfassenden Fragen verschiedenen Typs abfragen und wiederholen. Sie können diese Fragen als "inverted classroom" verstehen, und damit als komplementär zu den vorgeschlagenen größeren Übungen im nächsten Abschnitt. Die Idee ist, dass Sie sich hier überlegen können, ob Sie die gestellten Fragen selbst beantworten können. Falls es noch Unklarheiten gibt, können Sie die entsprechenden Antworten nochmals direkt in den passenden Abschnitten des Lernmoduls rekapitulieren. Dementsprechend sind die Antworten auch absichtlich skizzenhaft. Bitte zögern Sie nicht, bei konkreten Fragen einen der Kanäle zur Hilfe zur Selbsthilfe zu nutzen.


Vokabeltest

    Was ist der Unterschied zwischen dict, set und list?
        Ein Dictionary (Datentyp dict) speichert key-value Paare, wie ein Lexikon bzw. ein Wörterbuch. Über den key kann auf den value zugegriffen werden. Es gibt keine Einschränkungen zu den Datentypen der keys und der values, außer dass immer genau ein key mit genau einem value verbunden ist. Verschiedene Datentypen für keys und/oder values in einem Dictionary sind erlaubt. 
        Eine Menge (Datentyp set) speichert beliebige Elemente, auch mit verschiedenen Datentypen. Die Datenstruktur stellt sicher, dass jedes Element genau einmal in der Menge vorkommt. 
        Eine Liste (Datentyp list) ist die allgemeinste Struktur und fasst beliebige Elemente, auch unterschiedlichen Typs, zusammen. Elemente können mehrfach vorkommen. Maßgeblich für den Zugriff auf Listenelemente ist die Reihenfolge der Elemente. 
    Was ist Rekursion?
        Rekursion ist eng verbunden mit dem Konzept von Funktionen. Wir sprechen von einem rekursiven Funktionsaufruf, wenn sich eine Funktion selbst aufruft. Dabei sind natürlich unendlich viele Aufrufe zu vermeiden, deshalb ist immer ein Rekursionsabbruch notwendig. 
    Welche Mengenoperationen stellt Python bereit?
        Alle die das Herz begehrt: Schnitt, Vereinigung, Inklusion, ... 
        

Syntaxfragen

    Erklären Sie str.split() und str.join()
        Diese beiden String-Funktionen trennen einen String auf an einem Trennsymbol (oder einem ganzen Trenn-String), bzw. bewirken das Gegenteil, d.h. die erstellen einen neuen String aus einer (Liste von) Einzelstring(s). 
        Minimale Democodes finden Sie in diesem Verzeichnis.
    Wie funktioniert Zeitmessung in Python?
        Es gibt hier viele Möglichkeiten, die einfachste ist es, das Python-Äquivalent einer Stoppuhr um zu messende Codeteile herum zu verwenden. Wichtig ist, dass diese Stoppuhr eine begrenzte Granularität besitzt: Es ist empfehlenswert, grundsätzlich mehrere (viele!) Wiederholungen eines Codeschnipsels zu messen und dann den Mittelwert der Laufzeit zu verwenden.
    Geben Sie den allgemeinen Syntax einer Funktion an.
        Der allgemeine Syntax lautet def function_name (arguments): block Hierbei ist block wie üblich zu verstehen. Für arguments gibt es viele Möglichkeiten, von einer einfachen Aneinanderreihung über benannte Argumente, variable Argumente mit Standardwerten hin zu beliebiger Flexibilität mittels * und **. 


Einfache Verständnisfragen

    Erklären Sie die allgemeine Syntax einer Comprehension.
        Der allgemeine Syntax lautet Anweisungen for Element in IterierbaresObjekt if Bedingung. Hierbei ist der if Teil optional, und das ganze wird eingewickelt in eckige Klammern wenn das Ergebnis eine Liste sein soll, in geschweifte Klammern wenn das Ergebnis eine Menge sein soll, und in geschweifte Klammern mit key-value Zuordnungen bei den Anweisungen wenn das Ergebnis ein Dictionary sein soll. Comprehensions sind eine mächtige Möglichkeit in Python, um aufwändigen Schleifen-Code zu vermeiden, wenn Listen, Dictionaries oder Mengen basierend auf bekannten Bedingungen konstruiert werden sollen. 
    Erklären Sie den Unterschied zwischen mutable und immutable
        Eine Antwort sprengt den Rahmen dieser inverted classroom Fragen. Die Frage wird hier vielmehr gestellt, um zu betonen, wie essentiell das Verständnis dieser Unterscheidung ist. Deshalb finden Sie eine ausführliche Erklärung nicht nur hier, sondern auch im CheatSheet, sowie regelmäßig wiederkehrend an vielen Stellen in den folgenden Lernmodulen.
    Was ist beim Operator + für mutable Datentypen zu beachten?
        Bei immutablen Datentypen wird immer ein neues Objekt im Speicher angelegt, bspw. bei der String-Konkatenation oder bei der Addition von Zahlen. Bei mutablen Datentypen geschieht dies nur bei der "ausführlichen" Schreibweise a = a + b, aber nicht bei der Kurzschreibweise a += b. Diese Festlegung des Sprachstandards von Python kann als unintuitiv empfunden werden. 
    Erklären Sie die Funktion append() für Listen.
        Diese Funktion respektiert die Mutabilität des Datentyps list. list.append(e) fügt das Element e der Liste list am Listenende hinzu. 
    Warum ist ein Rekursionsabbruch fundamental wichtig?
        Um unendliche Laufzeit zu vermeiden. Wie in einer vorherigen Frage geklärt, bedeutet Rekursion, dass sich eine Funktion selbst aufrufen kann. Der Rekursionsabbruch stellt sicher, dass diese Kette von Aufrufen tatsächlich irgendwann beendet wird, und das Programm nicht in einer sogenannten Endlosschleife verharrt. 
    Wofür sind Funktionen da?
        Die Fantasie Ihrer Antworten ist hier unbeschränkt. Einige Inspiration finden Sie hier, und viel mehr Verständnis wird ab dem nächsten Lernmodul aufgebaut.


Transferfragen

    Schreiben Sie eine dict comprehension, die jeder Zahl von 1 bis n einen String zuordnet, ob diese Zahl gerade ist oder nicht. Es reicht aus, wenn Sie zwei comprehensions schreiben, eine für die geraden Zahlen und eine für die ungeraden.
    Lesen Sie sich auf stackoverflow schlau, wie diese beiden dictionaries in einen vereinigt werden können.
        Lösungen finden Sie in diesem Verzeichnis
    Geben Sie jeweils ein Beispiel an, für das eine Liste, eine Menge oder ein Dictionary die Methode der Wahl ist.
        Dazu gab es im Verlauf des Lernmoduls reichlich Beispiele.

