Routineaufgaben mit Python automatisieren. Al Sweigart
alt="image"/>
def getAnswer(answerNumber):
if answerNumber == 1:
return 'It is certain'
elif answerNumber == 2:
return 'It is decidedly so'
elif answerNumber == 3:
return 'Yes'
elif answerNumber == 4:
return 'Reply hazy try again'
elif answerNumber == 5:
return 'Ask again later'
elif answerNumber == 6:
return 'Concentrate and ask again'
elif answerNumber == 7:
return 'My reply is no'
elif answerNumber == 8:
return 'Outlook not so good'
elif answerNumber == 9:
return 'Very doubtful'
r = random.randint(1, 9)
fortune = getAnswer(r)
print(fortune)
Die Ausführung dieses Programms können Sie sich auf https://autbor.com/magic-8ball.py/ ansehen. Zu Beginn importiert Python das Modul random (
Als Nächstes wird die Funktion getAnswer() mit r als Argument aufgerufen (
Da Sie Rückgabewerte als Argumente an andere Funktionsaufrufe übergeben können, lassen sich die drei folgenden Zeilen auch abkürzen:
r = random.randint(1, 9)
fortune = getAnswer(r)
print(fortune)
Die folgende einzelne Zeile macht genau das Gleiche:
print(getAnswer(random.randint(1, 9)))
Wie Sie wissen, bestehen Ausdrücke aus Werten und Operatoren. Da ein Funktionsaufruf zu seinem Rückgabewert ausgewertet wird, kann er daher auch in einem Ausdruck verwendet werden.
Der Wert None
In Python gibt es den Wert None, der die Abwesenheit eines Wertes bedeutet. Dies ist der einzige Wert des Datentyps NoneType. (In anderen Programmiersprachen wird er auch als null, nil oder undefined bezeichnet.) Ebenso wie die booleschen Werte True und False muss auch None mit großem Anfangsbuchstaben geschrieben werden.
Dieser Nicht-Wert ist praktisch, wenn Sie etwas speichern müssen, das nicht mit einem echten Wert in einer Variablen verwechselt werden darf. Eine mögliche Anwendung für None ist der Rückgabewert von print(). Diese Funktion zeigt Text auf dem Bildschirm an, muss im Gegensatz zu len() oder input() aber eigentlich nichts zurückgeben. Da aber alle Funktionsaufrufe zu einem Rückgabewert ausgewertet werden, gibt print() pro forma None zurück. Um sich das anzusehen, geben Sie Folgendes in die interaktive Shell ein:
>>> spam = print('Hello!')
Hello!
>>> None == spam
True
Wenn eine Funktionsdefinition keine return-Anweisung hat, hängt Python stillschweigend return None an, ebenso wie eine while- oder for-Schleife implizit mit einer continue-Anweisung endet. Wenn Sie eine return-Anweisung ohne Wert schreiben (also nur das Schlüsselwert return verwenden), wird ebenfalls None zurückgegeben.
Schlüsselwortargumente und print()
Die meisten Argumente werden anhand ihrer Position im Funktionsaufruf identifiziert. Beispielsweise ist random.randint(1, 10) etwas anderes als random.randint(10, 1). Die erste Funktion gibt eine Zufallszahl zwischen 1 und 10 zurück, da das erste Argument die Untergrenze und das zweite die Obergrenze des Intervalls darstellt. Dagegen führt random.randint(10, 1) zu einem Fehler.
Schlüsselwortargumente werden dagegen durch das Schlüsselwort bezeichnet, das ihnen in dem Funktionsaufruf vorangestellt wird. Diese Art von Argumenten wird häufig für optionale Parameter verwendet. Beispielsweise können Sie bei der Funktion print() mit den optionalen Parametern end und sep angeben, was am Ende der Argumente ausgegeben werden soll und was dazwischen (als Trennzeichen).
Betrachten Sie das folgende Beispielprogramm:
print('Hello')
print('World')
Die Ausgabe sieht wie folgt aus:
Hello
World
Die beiden Strings werden auf getrennten Zeilen ausgegeben, da print() am Ende des übergebenen Strings automatisch einen Zeilenumbruch einfügt. Mit dem Schlüsselwortargument end können Sie dieses Verhalten jedoch ändern. Nehmen wir an, wir haben folgendes Programm:
print('Hello', end='')
print('World')
Hier sieht die Ausgabe wie folgt aus:
HelloWorld
Die Ausgabe erscheint auf einer einzigen Zeile, da hinter 'Hello' kein Zeilenumbruch mehr ausgegeben wird, sondern ein leerer String. Das ist nützlich, wenn Sie den automatischen Zeilenumbruch hinter den Funktionsaufrufen von print() aufheben wollen.
Wenn Sie mehrere Stringwerte an print() übergeben, trennt die Funktion sie automatisch durch ein Leerzeichen. Geben Sie beispielsweise Folgendes in die interaktive Shell ein:
>>> print('cats', 'dogs', 'mice')
cats dogs mice
Das Standardtrennzeichen können Sie mit dem Schlüsselwortargument sep ändern. Probieren Sie in der interaktiven Shell Folgendes