Routineaufgaben mit Python automatisieren. Al Sweigart

Routineaufgaben mit Python automatisieren - Al Sweigart


Скачать книгу

      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 are you?

       Joe

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

       Mary

      Who are you?

       Joe

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

       swordfish

      Access granted.

      Die Ausführung dieses Programms können Sie sich auf https://autbor.com/hellojoe/ ansehen.

       For-Schleifen und die Funktion range()

      While-Schleifen werden durchlaufen, solange die Bedingung True ist. Was aber machen Sie, wenn Sie einen Codeblock eine bestimmte Anzahl von Malen ausführen wollen? Das können Sie mit der Anweisung for und der Funktion range() erreichen.

      Eine for-Anweisung hat die Form for i in range(5) und weist die folgenden Bestandteile auf:

       Das Schlüsselwort for

       Einen Variablennamen

       Das Schlüsselwort in

       Einen Aufruf der Methode range(), wobei bis zu drei Integer übergeben werden können

       Einen Doppelpunkt

       Einen eingerückten Codeblock (die for-Klausel), der in der nächsten Zeile beginnt

      Um uns eine for-Schleife in Aktion anzusehen, schreiben wir das Programm five-Times.py:

      print('My name is')

      for i in range(5):

      print('Jimmy Five Times (' + str(i) + ')')

      Die Ausführung dieses Programms können Sie sich auf https://autbor.com/fivetimesfor/ ansehen. Der Code in der for-Klausel wird fünfmal ausgeführt. Beim ersten Mal hat die Variable i den Wert 0. Der Aufruf von print() in der Klausel gibt daher Jimmy Five Times (0) aus. Nach einem kompletten Durchlauf durch den Code in der Klausel wird die Ausführung wieder am Anfang der Schleife fortgesetzt und i um 1 erhöht. Die Funktion range(5) ruft fünf Iterationen durch die Klausel hervor, da i nacheinander auf 0, 1, 2, 3 und 4 gesetzt wird. Die Variable wird erhöht, bis die nächste Erhöhung den an range() übergebenen Wert erreichen würde. Das Flussdiagramm für fiveTimes.py sehen Sie in Abb. 2–13.

       Abb. 2–13 Das Flussdiagramm für fiveTimes.py

      Wenn Sie das Programm ausführen, gibt es fünfmal Jimmy Five Times jeweils gefolgt von dem Wert von i aus, bevor es die Schleife verlässt.

      My name is

      Jimmy Five Times (0)

      Jimmy Five Times (1)

      Jimmy Five Times (2)

      Jimmy Five Times (3)

      Jimmy Five Times (4)

       Hinweis

      Auch in for-Schleifen können Sie die Anweisungen break und continue verwenden. Dabei sorgt eine continue-Anweisung dafür, dass das Programm mit dem nächsten Wert des Schleifenzählers fortfährt, als wäre die Ausführung


Скачать книгу