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

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

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

Автор: Al Sweigart

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

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

Серия:

isbn: 9783960889571

isbn:

СКАЧАТЬ

      name = '' image

      while name != 'your name': image

      print('Please type your name.')

      name = input() image

      print('Thank you!') image

      Die Ausführung dieses Programms können Sie sich auf https://autbor.com/yourname/ ansehen. Zu Anfang setzt es die Variable name auf einen leeren String (image), damit die Bedingung name != 'your name' zu True ausgewertet wird und das Programm mit der Ausführung der while-Klausel beginnt (image).

      Der Code in dieser Klausel fordert den Benutzer auf, seinen Namen einzugeben, und diese Eingabe wird der Variablen name zugewiesen (image). Da dies die letzte Zeile des Blocks ist, kehrt die Ausführung wieder zum Anfang der while-Schleife zurück, wo die Bedingung erneut ausgewertet wird. Wenn der Wert in name ungleich dem String 'your name' ist, so ist die Bedingung True, weshalb die while-Klausel erneut ausgeführt wird.

      Wenn der Benutzer aber your name eingibt, lautet die Bedingung 'your name' != 'your name', was False ist. Daher wird die while-Schleife nicht erneut ausgeführt, sondern übersprungen, sodass die Ausführung mit dem Rest des Programms fortgesetzt wird (image). Abbildung 2–10 zeigt das Flussdiagramm des Programms yourName.py.

       Abb. 2–10 Das Flussdiagramm für das Programm yourName.py

      Schauen wir uns yourName.py nun in Aktion an. Drücken Sie image, um das Programm auszuführen, und geben Sie mehrere Male irgendetwas anderes als your name ein, bevor Sie dem Programm schließlich das geben, was es haben will.

      Please type your name.

       Al

      Please type your name.

       Albert

      Please type your name.

       %#@#%*(^&!!!

      Please type your name.

       your name

      Thank you!

      Wenn Sie niemals your name eingeben, ist die Bedingung der while-Schleife niemals False. Das Programm wird Sie dann bis in alle Ewigkeit zur Eingabe auffordern. Der Aufruf von input() stellt für den Benutzer die Möglichkeit bereit, den richtigen String einzugeben, damit das Programm aus der Schleife herauskommt. In einem Programm kann es jedoch durchaus vorkommen, dass sich die Bedingung niemals ändert, was ein ziemliches Problem darstellen kann. Sehen wir uns daher an, wie Sie aus einer while-Schleife ausbrechen können.

       Break-Anweisungen

      Es gibt eine Abkürzung, um vorzeitig aus einer while-Schleife auszubrechen. Wenn das Programm bei der Ausführung eine break-Anweisung erreicht, verlässt es die while-Klausel sofort. Im Code besteht eine break-Anweisung lediglich aus dem Schlüsselwort break.

      Ziemlich einfach, oder? Das folgende Programm macht das Gleiche wie das vorherige, enthält zusätzlich aber eine break-Anweisung, um aus der Schleife ausbrechen zu können. Geben Sie den folgenden Code ein und speichern Sie die Datei als yourName2.py:

      while True: image

      print('Please type your name.')

      name = input() image

      if name == 'your name': image

      break image

      print('Thank you!') image

      Die Ausführung dieses Programms können Sie sich auf https://autbor.com/yourname2/ ansehen. Die erste Zeile (image) ruft eine Endlosschleife hervor – eine while-Schleife, deren Bedingung stets True ist (denn schließlich wird der Ausdruck True immer zu dem Wert True ausgewertet). Tritt das Programm erst einmal in die Schleife ein, kann es sie erst dann verlassen, wenn eine break-Anweisung ausgeführt wird. (Eine Endlosschleife, die niemals verlassen wird, ist ein häufig auftretender Bug.)

      Wie zuvor fordert das Programm den Benutzer dazu auf, your name einzugeben (image). Diesmal aber wird innerhalb der while-Schleife eine if-Anweisung ausgeführt (image), um zu prüfen, ob name gleich 'your name' ist. Ist diese Bedingung erfüllt, so wird die break-Anweisung ausgeführt (image), sodass das Programm die Schleife verlässt und zu print('Thank you!') übergeht (image). Anderenfalls wird die if-Klausel mit der break-Anweisung übersprungen, sodass die Programmausführung das Ende der while-Schleife erreicht. Dadurch springt sie wieder zum Anfang der while-Anweisung, wo die Bedingung überprüft wird (image). Da es sich bei dieser Bedingung einfach um den booleschen Wert True handelt, beginnt die Schleife erneut, sodass der Benutzer wieder aufgefordert wird, your name einzugeben. Das Flussdiagramm für dieses Programm sehen Sie in Abb. 2–11.

      Führen Sie yourName2.py aus und geben Sie den gleichen Text ein wie bei yourName.py. Die neue Version des Programms reagiert auf die gleiche Weise wie die ursprüngliche.