Routineaufgaben mit Python automatisieren. Al Sweigart
Чтение книги онлайн.

Читать онлайн книгу Routineaufgaben mit Python automatisieren - Al Sweigart страница 32

Название: Routineaufgaben mit Python automatisieren

Автор: Al Sweigart

Издательство: Bookwire

Жанр: Математика

Серия:

isbn: 9783960889571

isbn:

СКАЧАТЬ href="#fb3_img_img_b14fc153-f3ae-5775-8828-61b10559a8e8.png"/>

      Abb. 2–11Das Flussdiagramm für das Programm yourName2.py mit einer Endlosschleife. Der mit X markierte Pfad wird nie erreicht, da die Schleifenbedingung stets True ist.

       Continue-Anweisungen

      Ebenso wie break- werden auch continue-Anweisungen innerhalb von Schleifen verwendet. Wird bei der Ausführung eine solche Anweisung erreicht, so erfolgt ein Rücksprung zum Anfang der Schleife, wo die Schleifenbedingung erneut ausgewertet wird. (Dies geschieht auch, wenn die Ausführung am Ende der Schleife ankommt.)

       Gefangen in einer Endlosschleife?

      Wenn Sie ein Programm ausführen und es aufgrund eines Bugs in einer Endlosschleife hängen bleibt, drücken Sie image + image oder wählen Sie im IDLE-Menü Shell > Restart Shell. Dadurch wird ein KeyboardInterrupt-Fehler an das Programm gesendet und es bricht sofort ab. Um das auszuprobieren, schreiben Sie im Dateieditor eine einfache Endlosschleife und speichern das Programm als infiniteloop.py:

      while True:

      print('Hello, world!')

      Wenn Sie dieses Programm ausführen, gibt es Hello, world! auf dem Bildschirm aus und will nicht mehr damit aufhören, da die Bedingung der while-Anweisung stets True ist. Die Tastenkombination image + image ist auch dann praktisch, wenn ein Programm nicht in einer Endlosschleife gefangen ist, Sie es aber aus einem anderen Grund sofort abbrechen wollen.

      Im Folgenden verwenden wir continue für ein Programm, das Sie nach Ihrem Namen und Ihrem Passwort fragt. Geben Sie den folgenden Code in ein neues Dateieditorfenster ein und speichern Sie das Programm als swordfish.py:

      while True:

      print('Who are you?')

      name = input()

      if name != 'Joe': image

      continue image

      print('Hello, Joe. What is the password? (It is a fish.)')

      password = input() image

      if password == 'swordfish':

      break image

      print('Access granted.') image

      Wenn der Benutzer einen anderen Namen als Joe eingibt (image), sorgt die continue-Anweisung (image) dafür, dass die Programmausführung zum Beginn der Schleife zurückspringt. Nach der Auswertung der Bedingung wird stets die Schleife ausgeführt, da es sich bei dieser Bedingung einfach um den Wert True handelt. Hat die Ausführung erst einmal die erste if-Anweisung überwunden, wird der Benutzer nach dem Passwort gefragt (image). Gibt der Benutzer swordfish ein, wird die break-Anweisung ausgeführt (image), sodass das Programm die while-Schleife verlässt und die Meldung Access granted. ausgibt (image). Anderenfalls wird die Ausführung bis zum Ende der while-Schleife fortgesetzt, von wo aus sie zum Beginn der Schleife zurückspringt. Das können Sie in dem Flussdiagramm in Abb. 2–12 ablesen.

      Abb. 2–12Das Flussdiagramm für das Programm swordfish.py. Der mit X markierte Pfad wird nie erreicht, da die Schleifenbedingung stets True ist.

       »Truthy«- und »Falsey«-Werte

      Es gibt auch einige Werte anderer Datentypen, die in Bedingungen als gleichwertig mit True und False angesehen werden. In Bedingungen gelten 0, 0.0 und '' (ein leerer String) als False, alle anderen Werte dagegen als True. Betrachten Sie beispielsweise das folgende Programm:

      name = ''

      while not name: image

      print('Enter your name:')

      name = input()

      print('How many guests will you have?')

      numOfGuests = int(input())

      if numOfGuests: image

      print('Be sure to have enough room for all your guests.') image

      print('Done')

      Die Ausführung dieses Programms können Sie sich auf https://autbor.com/howmanyguests/ ansehen. Wenn der Benutzer einen leeren String für name eingibt, dann ist die Bedingung der while-Anweisung True (image), sodass das Programm weiterhin nach dem Namen fragt. Ist der Wert von numOfGuests ungleich 0 (image), wird die Bedingung als True aufgefasst, sodass das Programm einen Hinweis für den Benutzer ausgibt (image).

      Sie könnten auch not name != '' statt not name und numOfGuests != 0 statt numOfGuests schreiben, aber mit den sogenannten Truthy- und Falsey-Werten wird der Code übersichtlicher.

      Führen Sie das Programm swordfish.py aus und machen Sie einige Eingaben. Erst wenn Sie sich als Joe vorstellen, werden Sie nach dem Passwort gefragt. Nachdem Sie das richtige Passwort eingegeben haben, endet das Programm.

      Who are you?

       I'm fine, thanks. Who are you?

      Who СКАЧАТЬ