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

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

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

Автор: Al Sweigart

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

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

Серия:

isbn: 9783960889571

isbn:

СКАЧАТЬ bilden eine hervorragende Möglichkeit, um Ihren Code zu gliedern. Betrachten Sie sie als Blackbox: Sie haben Eingaben in der Form von Parametern und Ausgaben in Form von Rückgabewerten, aber ihr interner Code wirkt sich nicht auf die Variablen in anderen Funktionen aus.

      In vorherigen Kapiteln führte ein einziger Fehler zum Absturz des gesamten Programms. In diesem Kapitel haben Sie die Anweisungen try und except kennengelernt, mit denen besonderer Code ausgeführt werden kann, wenn ein Fehler erkannt wurde. Das macht Ihren Code widerstandsfähiger gegen gängige Fehler.

       Wiederholungsfragen

      1 Warum ist es von Vorteil, in Ihren Programmen Funktionen zu verwenden?

      2 Wann wird der Code in einer Funktion ausgeführt – bei der Definition oder beim Aufruf der Funktion?

      3 Mit welcher Anweisung erstellen Sie eine Funktion?

      4 Was ist der Unterschied zwischen einer Funktion und einem Funktionsaufruf?

      5 Wie viele globale Gültigkeitsbereiche hat ein Python-Programm? Wie viele lokale Gültigkeitsbereiche?

      6 Was geschieht mit den Variablen in einem lokalen Gültigkeitsbereich, wenn der Funktionsaufruf die Steuerung zurückgibt?

      7 Was ist ein Rückgabewert? Kann ein Rückgabewert Teil eines Ausdrucks sein?

      8 Welchen Rückgabewert hat der Aufruf einer Funktion, die keine return-Anweisung hat?

      9 Wie können Sie dafür sorgen, dass in einer Funktion eine globale Variable verwendet wird?

      10 Welchen Datentyp hat None?

      11 Was macht die Anweisung import areallyourpetsnamederic?

      12 Wie rufen Sie die Funktion bacon() aus dem Modul spam auf, nachdem Sie spam importiert haben?

      13 Wie verhindern Sie, dass ein Programm beim Auftreten eines Fehlers abstürzt?

      14 Was steht in einer try-Klausel und was in der except-Klausel?

       Übungsprojekte

      Schreiben Sie zur Übung Programme, die die folgenden Aufgaben lösen.

       Die Collatz-Folge

      Schreiben Sie die Funktion collatz() mit dem Parameter number. Wenn number eine gerade Zahl ist, soll diese Funktion number // 2 ausgeben und zurückgeben. Ist number dagegen ungerade, soll collatz das Ergebnis von 3 * number + 1 ausgeben und zurückgeben.

      Schreiben Sie anschließend ein Programm, das eine ganze Zahl als Benutzereingabe entgegennimmt und anschließend für diese Zahl und danach für die Rückgabewerte immer wieder collatz() aufruft, bis die Funktion den Wert 1 zurückgibt. (Erstaunlicherweise funktioniert das mit jeder beliebigen ganzen Zahl als Ausgangspunkt. Früher oder später erreichen Sie mit dieser Folge den Wert 1. Selbst Mathematiker wissen nicht, warum das so ist. Dieses Programm veranschaulicht die sogenannte Collatz-Folge, die manchmal auch als »das einfachste unlösbare Problem der Mathematik« bezeichnet wird.)

      Vergessen Sie nicht, den Rückgabewert von input() mithilfe von int() in einen Integer umzuwandeln, denn zunächst einmal ist er ein String.

      Tipp: Der Integer number ist gerade, wenn number % 2 == 0, und ungerade, wenn number % 2 == 1.

      Die Ausgabe dieses Programms sieht wie folgt aus:

      Enter number:

      3

      10

      5

      16

      8

      4

      2

      1

       Eingabevalidierung

      Ergänzen Sie das vorherige Projekt um try- und except-Anweisungen, um festzustellen, ob der Benutzer etwas anderes als einen Integer eingegeben hat. Normalerweise gibt die Funktion int() den Fehler ValueError zurück, wenn ihr etwas anderes als ein String übergeben wird, der die Ziffernfolge einer ganzen Zahl darstellt, z. B. int('puppy'). Geben Sie in der except-Klausel eine Meldung aus, die den Benutzer darauf hinweist, dass er eine ganze Zahl eingeben muss.

       4

       Listen

      image Bevor Sie ernsthaft damit beginnen können, Programme zu schreiben, müssen Sie sich noch mit einem weiteren Thema beschäftigen, nämlich mit den miteinander verwandten Datentypen für Listen und Tupel. Beide können mehrere Werte enthalten, was es einfacher macht, Programme zu schreiben, die mit großen Datenmengen umgehen. Da Listen wiederum andere Listen einschließen können, ist es damit auch möglich, Daten hierarchisch zu gliedern.

      In diesem Kapitel beschäftigen wir uns mit den Grundlagen von Listen. Außerdem stelle ich Methoden vor, also Funktionen, die an die Werte eines bestimmten Datentyps gebunden sind. Des Weiteren werde ich kurz auch auf sequenzielle Datentypen im Allgemeinen (Listen, Tupel und Strings) und ihre Unterschiede und Gemeinsamkeiten eingehen. Im nächsten Kapitel geht es dann um den Datentyp für Dictionaries (Wörterbücher).

       Der Datentyp für Listen

      Eine Liste ist ein Wert, der mehrere Werte in einer geordneten Reihenfolge enthält, etwa wie folgt: ['cat', bat', 'rat', 'elephant']. So wie Anfang und Ende von Stringwerten durch Anführungszeichen gekennzeichnet sind, so beginnen und enden Listen mit eckigen Klammern. Der Begriff Listenwert bezeichnet dabei die Liste selbst (da sie wie jeder andere Wert in einer Variablen gespeichert oder einer Funktion übergeben werden kann), nicht die darin enthaltenen Werte. Diese werden Elemente genannt und sind durch Kommata getrennt. Zur Veranschaulichung geben Sie Folgendes in die interaktive Shell ein:

      >>> [1, 2, 3]

      [1, 2, 3]

      >>> ['cat', 'bat', 'rat', 'elephant']

      ['cat', 'bat', 'rat', 'elephant']

      >>> ['hello', 3.1415, True, None, 42]

      ['hello', 3.1415, True, None, 42]

      >>> spam = ['cat', 'bat', 'rat', 'elephant'] image

СКАЧАТЬ