GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Material
  • Erste Schritte
  • Einfaches Zeichnen mit turtle
  • Variablen
  • Schleifen
  • Benutzerdefinierte Funktionen
  • Funktionen mit Parametern
  • Verzweigungen
  • Bedingte Schleifen
  • Logische Operatoren
  • Wie es weiter geht
  • Lizenz

This view

  • Original page
  • New address

GeezerVison is showing opentechschool.github.io — Bedingte Schleifen — Introduction to Programming with Python

Python for Beginners 2015.10.02
  • Material
      • Erste Schritte
      • Einfaches Zeichnen mit turtle
      • Variablen
      • Schleifen
      • Benutzerdefinierte Funktionen
      • Funktionen mit Parametern
      • Verzweigungen
      • Bedingte Schleifen
      • Logische Operatoren
      • Wie es weiter geht
      • Lizenz
  • Chapter
      • Bedingte Schleifen
        • Einführung
        • Schildkrötengefängnis
          • Übung
          • Lösung
        • Zeichne eine Spirale
          • Übung
          • Lösung
          • Bonus
  • Previous
  • Next
  • Languages
    • English
    • Deutsch (German)
    • Español (Spanish)
    • русский (Russian)
    • 한국인 (Korean)
    • Română (Romanian)

Bedingte Schleifen¶

Einführung¶

Bedingte Schleifen sind ein Weg etwas zu wiederholen, solange eine bestimmte Bedingung erfüllt, oder True, ist. Falls die Bedingung immer erfüllt ist (also nie False wird), läuft die Schleife endlos weiter. Falls die Bedingung schon anfänglich falsch ist, wird der Code in der Schleife niemals ausgeführt! In Python werden bedingte Schleifen mit der while-Anweisung definiert:

word = ''
sentence = ''
print('Please enter some words.')
print('Include a period (.) when you are finished.')
while '.' not in word:
    word = input('next word: ')
    sentence = word + ' ' + sentence
print()
print('Aha! You said:')
print(sentence)

Wir nennen diesen Teil des Quelltextes die ‘Bedingung’: '.' not in word

Ob die Bedingung wahr (True) zurückgibt oder nicht entscheidet, ob der Quelltext innerhalb der while-Schleife ausgeführt wird.

Lies den obigen Quellcode und schau, ob du im Kopf herleiten kannst, was er tut (und was die endgültige Ausgabe sein wird).

Dann kopier ihn in eine Datei, sagen wir satz.py, und führe ihn aus – schau genau, was er tut. Trifft das, was du dir gedacht hast, zu?

Bemerkung

Falls du Python 2 benutzt, wirst du input``mit ``raw_input ersetzen müssen, um das Programm korrekt auszuführen.

Schildkrötengefängnis¶

Übung¶

The turtle has been up to its usual tricks again, robbing liquor stores and building up huge gambling debts. It’s time for turtle to be put into a cell that it can’t get out of.

Lass uns eine neue Version von forward() bauen. Eine, die die Schildkröte herumdreht, falls sie versucht, sich weiter als 100 von ihrem Ursprung zu entfernen. Wir brauchen eine while-Schleife und einige neue turtle-Funktionen:

  • turtle.distance(0, 0)- Entfernung der Schildkröte vom Ursprung

  • turtle.towards(0, 0) - Der Winkel, der zurück zum Ursprungspunkt führt

  • turtle.setheading(Winkel) - Lege die Ausrichtung der Schildkröte direkt fest

Du kannst, wenn du magst, versuchen, mit der turtle in einem Interpreter herumzuspielen und die Funktionen zu benutzen, um genau zu sehen, was sie tut.

Jetzt wirst du die Gefängnislogik implementieren müssen, indem du die turtle-Funktionen, vielleicht eine while-Schleife und ein bisschen bedingte Logik, verwendest. Es ist ein bisschen haarig, aber bleib dran! Scheue nicht davor zurück, deine Idee mit einem Coach oder einem anderen Lernenden durchzusprechen.

Lösung¶

def forward(distance):
    while distance > 0:
        if turtle.distance(0,0) > 100:
            angle = turtle.towards(0,0)
            turtle.setheading(angle)
        turtle.forward(1)
        distance = distance - 1

Zeichne eine Spirale¶

Schleifen können mit der break-Anweisung unterbrochen werden. Das ist besonders nützlich, wenn du eine Endlosschleife schreibst, welches eine Schleife ist, deren Bedingung immer wahr (True) ist.

Übung¶

Schreibe eine while-Schleife mit einer Bedingung, die immer wahr (True) ist, um eine Spirale zu malen. Unterbrich die Schleife, wenn die turtle eine gewisse Distanz zum Mittelpunkt erreicht hat. Benutze die Funktion turtle.distance(x, y), um die Entfernung der Schildkröte zu dem durch die x- und y-Koordinaten bestimmten Punkt zu errechnen.

Um das zu tun, brauchst Du die Funktionen turtle.xcor() und turtle.ycor(), welche die Position der Schildkröte auf der X- und Y-Achse zurückgeben.

Bemerkung

Um eine Spirale zu zeichnen, muss die Schildkröte um einen konstanten Winkel gedreht werden und dabei um eine anwachsende Strecke vorwärts bewegt werden.

Lösung¶

def draw_spiral(radius):
    original_xcor = turtle.xcor()
    original_ycor = turtle.ycor()
    speed = 1
    while True:
        turtle.forward(speed)
        turtle.left(10)
        speed += 0.1
        if turtle.distance(original_xcor, original_ycor) > radius:
            break

Bonus¶

Kannst du eine Bedingung für die Schleife formulieren, so dass du du keine Endlosschleife while True oder die break-Anweisung benötigst? Welche Version findest du einfacher zu verstehen?

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.