Seite 1 von 1

Verfasst: Mittwoch 14. Februar 2007, 19:13
von BlackJack
Das mit der ``while``-Schleife ist recht kompliziert. ``for``-Schleifen wurden hier doch schon gezeigt:

Code: Alles auswählen

from turtle import forward, right, width

def viereck(size):
    for dummy in xrange(4):
        forward(size)
        right(90)

def main():
    width(2)
    viereck(100)

if __name__ == '__main__':
    main()
Ausserdem sollte man in Funktionen möglichst nicht auf Werte im Modulnamensraum zugreifen, die man besser als Argument übergeben kann. Dann lassen sich Funktionen nicht mehr benutzen oder testen ohne dass man im gesamten Programm suchen muss, wo die benötigten Werte eigentlich herkommen.

Für ein Rechteck musst Du zwei Seiten in der einen Länge zeichnen und zwei in der anderen. Jeweils abwechselnd. Wenn man eine Schleife über die Zahlen 0 bis 3 hat, wie im Beispiel oben, kann man beispielsweise unter Verwendung des Modulo-Operators (``%``) testen, ob die Nummer der aktuellen Seite gerade oder ungerade ist, und entsprechend die erste oder zweite Längenangabe benutzen.

Verfasst: Mittwoch 14. Februar 2007, 20:44
von guter_hund
Ich habe es jetzt erst mal so gemacht:

Code: Alles auswählen

from turtle import *
def quadrilateral(side_a, side_b):
    next_side = side_a
    for i in range(4):
        forward(next_side)
        right(90)

        if next_side == side_a:
            next_side = side_b
        else:
            next_side = side_a        
width(2)
quadrilateral(100, 100)
up()
goto(40, -100)
left(90)
down()
quadrilateral(40, 20)             
up()
goto(20, -40)
down()
quadrilateral(20, 20)
up()
goto(60, -40)
down()
quadrilateral(20, 20)
up()
goto(0, 0)
down()
right(45)
forward(71)
left(90)
up()
goto(100, 0)
down()
forward(71)
right(45)
up()
goto(30, 40)

Aber ich versuche es mal mit deiner Variante wenn ich ein bisschen mehr Zeit habe...

MFG.

Edit (Leonidas): Code-Highlighting eingeschaltet.

Verfasst: Mittwoch 14. Februar 2007, 20:46
von Leonidas
Könntest du das mit dem *-Import lassen? Das ist schon Absicht, dass weder BlackJack noch ich *-Imports benutzt haben.

Infos gibts unter [wiki]Module[/wiki].