turtle ying-yang

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
deep
User
Beiträge: 4
Registriert: Sonntag 11. Mai 2008, 12:34

Dienstag 13. Mai 2008, 19:42

hallo zusammen,
ihr habt mir schonmal so gut geholfen und nun hoffe ich, dass ihr mir auch dieses Mal weiter helfen koennt^^

Aufgabe:
Schreibe eine Prozedur kreissymbol, welche die rechte der obenstenden Figuren erzeugt; dabei soll radius der Parameter des kleinen Kreisradius sein.
(Originaltext, die sind bei uns immer so komisch)

meine Lösung:

Code: Alles auswählen

def yingyang(radius):
    fill(1)
    left(90)
    circle(radius,180)
    left(180)
    circle(radius,-180)
    circle(radius*2,180)
    fill(0)
    left(90)
    forward(radius/2)
    right(90)
    fill(1)
    color('white')
    circle(radius/2)
    fill(0)
    left(90)
    up()
    forward(radius*2)
    right(90)
    down()
    fill(1)
    color('black')
    circle(radius/2)
    fill(0)
    left(90)
    up()
    forward(radius+radius/2)
    down()
    left(90)
    circle(radius*2)
klappt auch wunderbar, allerdings ist der code so unübersichtlich, dass der mir selber nicht gefällt (und das ist ziemlich selten :roll: )
Wie kann ich das Ganze also etwas übersichtlicher machen?

deep
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Dienstag 13. Mai 2008, 20:08

deep hat geschrieben:Aufgabe:
Schreibe eine Prozedur kreissymbol, welche die rechte der obenstenden Figuren erzeugt; dabei soll radius der Parameter des kleinen Kreisradius sein.
(Originaltext, die sind bei uns immer so komisch)
Das "komischste" an der Aufgabenstellung ist die "rechte der obenstenden(!) Figuren". Ich nehme an, gemeint ist "obenstehend", aber anders als vermutlich auf dem Originalaufgabenblatt gibt es diese Figur hier nicht.
Dem Titel des Threads könnte man nun entnehmen, dass es sich dabei vielleicht um die dort benannte Figur handeln könnte ...

Jedenfalls: Meines Erachtens lässt sich am Code nicht viel machen. Es ist eben eine Abfolge bestimmter Bewegungen mit der Turtle zu vollziehen. Man könnte die Figur natürlich auch noch auf andere Weisen zusammensetzen, aber ich glaube nicht, dass der Code dadurch "besser" wird, nur eben anders.
deep
User
Beiträge: 4
Registriert: Sonntag 11. Mai 2008, 12:34

Dienstag 13. Mai 2008, 20:18

pütone hat geschrieben:
deep hat geschrieben:Aufgabe:
Schreibe eine Prozedur kreissymbol, welche die rechte der obenstenden Figuren erzeugt; dabei soll radius der Parameter des kleinen Kreisradius sein.
(Originaltext, die sind bei uns immer so komisch)
Das "komischste" an der Aufgabenstellung ist die "rechte der obenstenden(!) Figuren". Ich nehme an, gemeint ist "obenstehend", aber anders als vermutlich auf dem Originalaufgabenblatt gibt es diese Figur hier nicht.
Dem Titel des Threads könnte man nun entnehmen, dass es sich dabei vielleicht um die dort benannte Figur handeln könnte ...
Die Figur auf dem Aufgabenblatt sieht genau so aus wie der Code sie 'zeichnet'.
Dann muss ich damit wohl glücklich werden, vielen dank für die rasche Antwort :)
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Dienstag 13. Mai 2008, 20:19

Eine Kleinigkeit ist mir doch noch eingefallen, ob es eine Verbesserung ist, überlasse ich dir:

Code: Alles auswählen

def yingyang(radius):

    def ying(col):
        down()
        right(90)
        fill(1)
        color(col)
        circle(0.5*radius)
        fill(0)
        left(90)
        up()

    fill(1)
    left(90)
    circle(radius,180)
    left(180)
    circle(radius,-180)
    circle(2*radius,180)
    fill(0)
    left(90)
    forward(0.5*radius)
    ying('white')
    forward(2*radius)
    ying('black')
    forward(1.5*radius)
    right(90)
    down()
    circle(-2*radius,180)
Antworten