Wie kann man mehrere for-Schleifen verwenden?

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
NewToPython
User
Beiträge: 8
Registriert: Sonntag 14. Januar 2018, 14:47

Hallo Ihr Lieben,

wie mein Name schon sagt, bin ich new to python. Auch ist das mein erster Post in einem Forum. Ich bin sozusagen noch bei den very basics. Nun habe ich mich seit ein, zwei Tagen mit dem Turtle beschäftigt.

Ich habe es geschafft einen Stern bzw. mehrere Sterne nebeneinander zu zeichen. Jedoch nicht so, wie ich es möchte. Habe lange rum probiert, leider nichts gefunden, auch nicht im Google. Ich möchte dass der Turtle immer nach dem Zeichnen eines Sterns nach vorne oder nach oben bewegt, sodass die Sterne an verschiedenen Plätzen gezeichnet werden und nicht immer an der selben Stelle.

Bisher ist es folgendes, was ich damit erreichen konnte:

import turtle
hello = turtle.Turtle() # Die ganze Aufgabe habe ich mir selbst ausgedacht :), Umer

def Star(länge, kurve):
hello.forward(länge)
hello.right(kurve)

for i in range(5): # wiederholt sich 5 mal. Das heißt, es zeichnet den ersten Stern!
Star(200, 144)
hello.forward(200) # geht nach dem ersten Stern 200 weiter, also am Ende des Sterns.

for i in range(5): # wiederholt sich weider 5 mal und zeichnet den zweiten Stern außerhalb des ersten.
Star(200, 144)
hello.backward(400) # geht nach dem zweiten Stern 400 zurück, also am Ursprung

for i in range(5):
Star(200, 144)
hello.right(180)

for i in range(5):
Star(200, 144)


Wie Ihr sehen könnt, habe ich 5 for-Schleifen für 3 Sterne verwendet, was auf jeden Fall 3 zu viel sind!

Vielen Dank schon mal für Eure Hilfe.

LG
NewToPython
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@NewToPython: Du zeichnest 4 Sterne mit 4 for-Schleifen, von daher verstehe ich die Frage nicht ganz.

Die Funktion »Stern« zeichnet keinen Stern, sondern nur eine Seite. Was muß man daher noch machen, damit die Funktion wirklich den kompletten Stern zeichnet?
NewToPython
User
Beiträge: 8
Registriert: Sonntag 14. Januar 2018, 14:47

@Sirius3: Danke für die Antwort erstmal.

was ich wollte bzw. will ist, zu wissen, ob das gleich aber mit weniger bzw einer for-Schleife möglich ist, anstatt die 4 Schleifen zu nutzen.
nezzcarth
User
Beiträge: 1633
Registriert: Samstag 16. April 2011, 12:47

Sirius3 hat es doch schon angesprochen: Warum hast du eine Funktion, die nur einen Teil des Sterns zeichnet, statt den gesamten Stern?

Zum Beispiel so:

Code: Alles auswählen

import turtle

def star(length, angle=144):
    for _ in range(5):
        turtle.forward(length)
        turtle.right(angle)

for _ in range(4):
    star(50)
    turtle.up()
    turtle.forward(55)
    turtle.down()
NewToPython
User
Beiträge: 8
Registriert: Sonntag 14. Januar 2018, 14:47

@nezzcarth: vielen lieben Dank für den Code. Ich habe mich nun über eine Stunde auseinander gesetzt und mir den (deinen) Code Schritt für Schritt angeschaut. Nun habe ich den Dreh raus. Ich danke dir so sehr.

@Sirius3: Entschuldige bitte. Du hattest versucht, mir die Richtung zu zeigen. Aber wie gesagt, bin ich noch ein Anfänger. Also Sorry, dass ich es nicht gleich kapiert habe und Danke für deine Zeit trotzdem.

LG an Euch Beide!
NewToPython
Antworten