At My Fingertips

Documentation

Yin Yang

In dieser Aktivität üben Sie das Drehen und Zusammenstellen von Grafiken.

Grafik Komponieren

Hier ist das Taijitu, ein berühmtes Symbol, das das Konzept von Yin und Yang darstellt!

yin yang

Auf den ersten Blick sieht diese Grafik nicht trivial aus.

Die zwei kleinen Kreise stechen hervor. Aber wie ist der Rest aufgebaut? Sie haben es vielleicht schon gesehen, es ist einfacher, als es vielleicht auf den ersten Blick aussieht: Sie brauchen nur Kreise und Halbkreise (Kreissektoren von 180 Grad)!

Die Funktion kreis

Wenn Sie es noch nicht getan haben, fügen Sie eine Funktion kreis zu Ihrer Toolbox hinzu. Ihre Funktion sollte die folgende Signatur haben:

def kreis(durchmesser: float, farbe: Farbe) -> Grafik

Wenn Sie diese Funktion noch nicht haben, sollten Sie die Aktivität PyTamaro iconEinfacher Schneemann durcharbeiten, um zu lernen, wie man eine Funktion in die Toolbox einfügt.

Sobald Sie eine kreis-Funktion in Ihrer Toolbox haben, importieren Sie sie hier:

Loading...

Mit dieser Import-Anweisung haben Sie Python mitgeteilt, dass sich der Name kreis auf die Kreisfunktion bezieht, die Sie zu Ihrer Toolbox hinzugefügt haben. Von nun an können Sie hier diesen Namen verwenden, um die Funktion aufzurufen.

Probieren Sie es aus! Lassen Sie uns einen schwarzen Kreis mit einem Durchmesser von 100 darstellen:

Loading...

Die Funktion halbkreis

Die zweite Art von Grafik, die wir brauchen, ist ein Halbkreis. Schreiben Sie eine Funktion, die einen solchen erzeugt, indem Sie kreis_sektor mit einem Winkel von 180 Grad aufruft:

Loading...

Jetzt erstellen wir einen schwarzen Halbkreis mit einem Durchmesser von 100 und zeigen ihn:

Loading...

Zusammensetzen des Yin Yang

Jetzt sind wir bereit, das Yin-Yang-Symbol zu konstruieren! Sehen Sie Sich das Symbol genau an und überlegen Sie, wie Sie es aus Kreisen und Halbkreisen zusammensetzen können.

yin yang

Implementieren Sie die folgende Funktion yin_yang. Die importierten Funktionen neben, drehe, ueber und ueberlagere, und die Farben schwarz und weiss können dabei nützlich sein.

Loading...

Schöner Code

Sie sind fertig! Sie haben eine funktionierende yin_yang-Funktion!

Oder doch nicht?

Der Code, den wir schreiben, wird von zwei verschiedenen Einheiten gelesen. Der Computer (oder, genauer gesagt, der Python-Interpreter, das Programm, das Python-Code liest und ausführt) ist relativ leicht zufrieden zu stellen. Man kann ihn mit Code füttern, der furchtbar aussieht. Und er führt ihn fröhlich aus, solange er der Syntax und Semantik der Sprache Python entspricht.

Aber ausser dem Computer gibt es noch jemanden, der Ihren Code liest: Menschen! Dazu gehören Sie und auch Ihre Teamkollegen! In Zukunft müssen diese Leute Ihren Code vielleicht verstehen, um Fehler zu beheben, seine Leistung zu verbessern oder neue Funktionen hinzuzufügen. Und wenn Sie korrekten, aber schrecklichen Code geschrieben haben, werden diese Leute (und das schliesst Sie ein!) nicht erfreut sein!

Wann immer wir also eine funktionierende Funktion haben, räumen wir sie auf! Wir refaktorisieren den Code, um ihn für Menschen leichter verständlich zu machen. Programmierer, die verständlichen Code schreiben, werden geschätzt. Aber niemand will mit Programmierern arbeiten, die schwer lesbaren Code schreiben.

Aufräumen

Bereinigen wir also die Funktion yin_yang, damit sie leicht zu verstehen ist.

So, hier sind zwei verschiedene Möglichkeiten, wie die Funktion geschrieben werden könnte. Es gibt noch viele andere. Aber diese beiden unterscheiden sich durch die Verwendung von Namen für die Benennung von Zwischenergebnissen.

Keine Namen - ein grosser Ausdruck

def yin_yang(durchmesser: float) -> Grafik:
    return ueberlagere(
        ueber(
            ueberlagere(
                kreis(durchmesser / 6, schwarz),
                kreis(durchmesser / 2, weiss)
            ),
            ueberlagere(
                kreis(durchmesser / 6, weiss),
                kreis(durchmesser / 2, schwarz)
            )
        ),
        neben(
            drehe(90, halbkreis(durchmesser, weiss)),
            drehe(-90, halbkreis(durchmesser, schwarz))
        )
    )

Wenn Sie den obigen Code verstehen wollen, müssen Sie ihn so gut wie ganz lesen. Er ist schön eingerückt, und die gesamte Struktur der Yin-Yang-Grafik ist an einer Stelle sichtbar. Aber die Struktur ist ziemlich umfangreich. Es ist wahrscheinlich sinnvoll, einige der Teile zu benennen, damit ein Leser (Sie, in der Zukunft, oder ein zukünftiger Teamkollege) nicht erraten muss, was die Teile des Ausdrucks bedeuten.

Namen für Zwischenteile

def yin_yang(durchmesser: float) -> Grafik:
    weisses_auge = ueberlagere(
        kreis(durchmesser / 6, schwarz), 
        kreis(durchmesser / 2, weiss)
    )
    schwarzes_auge = ueberlagere(
        kreis(durchmesser / 6, weiss), 
        kreis(durchmesser / 2, schwarz)
    )
    augen = ueber(weisses_auge, schwarzes_auge)
    grund = neben(
        drehe(90, halbkreis(durchmesser, weiss)),
        drehe(-90, halbkreis(durchmesser, schwarz))
    )
    return ueberlagere(augen, grund)

Der obige Code extrahiert sinnvolle Teile des großen Ausdrucks in kleinere Unterausdrücke, so dass er Namen für sie einführen kann. Wenn wir einen Ausdruck wie ueberlagere(augen, grund) lesen, können wir uns in etwa vorstellen, was er bedeutet, und wir müssen nicht ueberlagere(10 Zeilen Code,4 Zeilen Code) lesen.

Das ist ein Vorteil der Benennung von Dingen: Wir brauchen nicht viel zu lesen, um eine einigermassen gute Vorstellung davon zu haben, was vor sich geht. Natürlich müssen die Namen, die wir wählen, genau sein. Wir würden nicht ueberlagere(honigbiene, blume) verwenden wollen, um ein Yin Yang zu beschreiben!

Refactorieren Sie Ihren Code

Wenn Ihr Code Verbesserungspotenzial hat, sollten Sie ihn jetzt refaktorisieren, um ihn lesbarer zu machen.

Wenn Sie dann denken, dass Sie Ihre yin_yang-Funktion in anderen Aktivitäten wiederverwenden möchten (oder auf dem Playground, wo Sie kreativ sein und beliebige Grafiken erstellen können), können Sie sie gerne in Ihrer Toolbox speichern.

Sie könnten auch Ihre Funktion halbkreis speichern; Es scheint eine allgemein nützliche Funktion zu sein, die sich in der Zukunft als nützlich erweisen könnte.

Was Sie gelernt haben

Ist das Yin-Yang-Symbol nicht wunderschön? Nicht nur visuell, sondern auch in Bezug auf seine Zusammensetzung?

Es gibt mehrere Möglichkeiten, das Symbol zu komponieren. Gefällt Ihnen die Art und Weise, wie Sie es gemacht haben? Haben Sie Namen für die verschiedenen Teile verwendet? Haben Sie alles in einen "riesigen" Ausdruck eingefügt? Oder haben Sie sogar zusätzliche Funktionen für die Erstellung der verschiedenen Teile erstellt? Sie können jederzeit zwischen den verschiedenen Möglichkeiten refaktorisieren.

Wenn Ihre Implementierung einfach zu verstehen ist, für Sie und für andere, denen Sie sie zeigen, haben Sie einen guten Grund, stolz zu sein!


This activity has been created by LuCE Research Lab and is licensed under CC BY-SA 4.0.

Yin Yang

Logo of PyTamaro

PyTamaro is a project created by the Lugano Computing Education Research Lab at the Software Institute of USI

Privacy PolicyPlatform Version 0ac3f58 (Wed, 16 Oct 2024 16:07:53 GMT)