Erfassen von Eingaben

Abgeschlossen

Sie haben bereits verschiedene Konstrukte der Programmiersprache Python kennengelernt. Sie haben auch einige Programme erstellt. Programme arbeiten jedoch mit Daten, und diese Daten müssen irgendwo herkommen. In dieser Lerneinheit sehen Sie sich genauer an, wie Sie Eingaben sowohl über die Befehlszeile als auch aus Benutzereingaben erfassen können.

Befehlszeileneingabe

Wenn Sie ein Programm mit python3 starten, übergeben Sie den Namen der Datei, die gestartet werden soll. Sie können auch einen Satz von Argumenten übergeben – Daten, auf die das Programm bei der Ausführung zugreifen kann. Das sieht dann so aus:

python3 backup.py 2023-01-01

Im obigen Code kann die Zeichenfolge „2023-01-01“ als Anweisung an das Programm backup.py verwendet werden, um eine Sicherung an diesem Datum zu starten. Die Verwendung von Befehlszeilenargumenten bietet Ihnen vor allem Flexibilität. Das Programm kann sich abhängig von seiner externen Eingabe unterschiedlich verhalten.

Befehlszeilenargumente

Wie werden diese Befehle auf der Programmierseite erfasst? Mithilfe des Moduls sys können Sie die Befehlszeilenargumente abrufen und in Ihrem Code verwenden. Sehen Sie sich den folgenden Code an:

import sys

print(sys.argv)
print(sys.argv[0]) # program name
print(sys.argv[1]) # first arg

sys.argv ist ein Array, also eine Datenstruktur, die mehrere Elemente enthält. Die erste Position (im Array als 0 bezeichnet) enthält den Programmnamen. Die zweite Position (1) enthält Ihr erstes Argument. Angenommen, das Programm backup.py enthält den Beispielcode, und Sie führen es wie folgt aus:

python3 backup.py 2023-01-01

Das Programm liefert dann das folgende Ergebnis:

['backup.py', '2023-01-01'] 
backup.py
2023-01-01

Benutzereingabe

Eine weitere Möglichkeit, Daten an das Programm zu übergeben, besteht darin, diese Daten durch Benutzer*innen eingeben zu lassen. Sie können das Programm so programmieren, dass es die Benutzer*innen anweist, Informationen einzugeben. Sie speichern die eingegebenen Daten im Programm und verarbeiten sie dann.

Zum Erfassen von Informationen von Benutzer*innen verwenden Sie die input()-Funktion. Hier sehen Sie ein Beispiel:

print("Welcome to the greeter program")
name = input("Enter your name: ")
print("Greetings " + name)

Angenommen, das Programm input.py enthält den Beispielcode, und Sie führen es wie folgt aus:

python3 input.py

Wenn Sie das Programm ausführen, werden Sie aufgefordert, Ihren Namen einzugeben, z. B.:

Welcome to the greeter program
Enter your name: 

Nachdem Sie einen Wert eingegeben und die EINGABETASTE gedrückt haben, wird die Begrüßung zurückgegeben:

Welcome to the greeter program
Enter your name: Picard
Greetings Picard

Arbeiten mit Zahlen

Die input()-Funktion speichert ein Ergebnis als Zeichenfolge, sodass der folgende Code möglicherweise nicht das tun kann, was Sie möchten:

print("calculator program")
first_number = input("first number: ")
second_number = input("second number: ")
print(first_number + second_number)

Wenn Sie dieses Programm ausführen, können Sie die erste Zahl eingeben, z. B. 3:

calculator program
first number: 3

Nachdem Sie die EINGABETASTE gedrückt haben, können Sie die zweite Zahl eingeben, in etwa 4:

calculator program
first number: 3
second number: 4

Wenn Sie die EINGABETASTE drücken, erhalten Sie folgendes Ergebnis:

calculator program
first number: 3
second number: 4
34

Wahrscheinlich haben Sie von diesem Programm als Antwort 7 und nicht 34 erwartet. Was ist also das Problem?

Die Erklärung ist, dass first_number und second_number Zeichenfolgen sind. Damit die Berechnung ordnungsgemäß funktioniert, müssen Sie diese Zeichenfolgen mithilfe der int()-Funktion in Zahlen umwandeln. Indem Sie die letzte Zeile des Programms so ändern, dass int() verwendet wird, können Sie das Problem beheben:

print(int(first_number) + int(second_number))

Beim erneuten Ausführen des Programms mit denselben Werten wird nun 7 als Antwort zurückgegeben:

calculator program
first number: 3
second number: 4
7