Python/ Input

Aus Wikibooks

Bitte erstellen Sie in IDLE oder ihrer präferierten IDE eine neue Datei und speichern Sie diese.

Wichtig: Die Zeilennummern dienen der Übersichtlichkeit und dürfen nicht mit eingegeben werden.

begruessung = "Bitte geben Sie den Radius ein:"
print(begruessung)

Führen Sie die Datei mit F5 aus, dabei sollte folgendes Ergebnis herauskommen:

================ RESTART: D:/AA_Projekte/Programmierung/wikibooks.py ================
Bitte geben Sie den Radius ein:
>>>

Die erste Zeile zeigt uns an, welche Datei gerade ausgeführt wurde. Wie Sie sehen, haben Sie Ihren ersten eigenen Text auf dem Bildschirm ausgegeben! Bevor wir lernen, wie Sie auch die Eingaben erfassen, dient uns dieses Beispiel dazu, zwei neue Konzepte zu erläutern.

Strings[Bearbeiten]

Bisher haben wir unseren Variablen ausschließlich Zahlen zugewiesen. Aber Zeichen funktionieren (fast) genauso einfach. Ein Zeichen ist dabei ein einzelner Buchstabe wie "A" "ö" aber auch "#", "!", "§" usw. und wird im Englischen als "charakter", kurz "char" bezeichnet. Für einen Text reihen wir Zeichen hintereinander, wie Perlen auf einer Schnur. Der entsprechende Datentyp heißt daher auch String (englisch für Schnur), kurz str.

>> begruessung = "Hallo!"
>> type(begruessung)
<class 'str'>

Um Python mitzuteilen, was alles zu dem String gehört, umschließen wir den Text jeweils mit Anführungszeichen ("). Das " wird auf der deutschen Tastatur über das gleichzeitige Drücken der Shift-Taste und der 2-Taste eingegeben. Was machen wir aber, wenn wir ein Anführungszeichen in unserem Text verwenden wollen? Dazu haben wir zwei Möglichkeiten:

Zum einen können wir den Text stattdessen mit dem Hochkomma (') umschließen (das ' wird mit der Shift- und der #-Taste eingegeben):

>> begruessung = 'Hat sie wirklich "Moin Moin" gesagt?'
>> begruessung
'Hat sie wirklich "Moin Moin" gesagt?'

Das funktioniert umgekehrt natürlich auch (der Datentyp bleibt dabei weiterhin "str"):

>> begruessung = "Hat sie wirklich 'Moin Moin' gesagt?"
>> begruessung
"Hat sie wirklich 'Moin Moin' gesagt?"

Python ist es dabei egal, welches Zeichen wir nutzen - es muss nur am Anfang und am Ende das gleiche sein.

Escapen[Bearbeiten]

Die andere Methode besteht darin, das Zeichen zu "escapen", dass heißt, es unsichtbar zu machen:

>> begruessung = "Hat sie wirklich \"Moin Moin\" gesagt?"
>> begruessung
'Hat sie wirklich "Moin Moin" gesagt'

Um ein Zeichen zu escapen nutzen wir das den \ (engl. "backslash") als Escape-Zeichen. Den \ erzeugen wir auf der deutschen Tastatur mittels der Alt Gr- und der ß-Taste. Jedes Zeichen hinter dem backslash wird ignoriert. Das erklärt auch diese Fehlermeldung:

>> t = "ein \"
SyntaxError: unterminated string literal (detected at line 1)

Das abschließende Anführungszeichen wird vom Interpreter nicht mehr gefunden, da wir es versteckt haben!

Kommentare[Bearbeiten]

Programmcode wird schnell unübersichtlich. Für Übersichtlichkeit und Nachvollziehbarkeit besteht die Möglichkeit, Code zu kommentieren. Python ignoriert dabei alles, was zwischen # und Zeilenende steht.

print("dieser String wird angezeigt")
# Zur Anschauung auskommentiert:
# print("dieser nicht")
print("innerhalb eines Strings wirkt das # nicht")

Das Ergebnis:

===================== RESTART: D:/AA_Projekte/Programmierung/kommentar.py =====================
dieser String wird angezeigt
innerhalb eines Strings wirkt das # nicht
>>>

Dreifach-Anführungszeichen[Bearbeiten]

Sie können dreifache Anführungszeichen nutzen um Text einzugeben, der über mehrere Zeilen geht:

text = """erste Zeile
hier geht der Text weiter
und hier ebenfalls
"""
print(text)

Ergibt:

====================== RESTART: D:/AA_Projekte/Programmierung/dreifach.py =====================
erste Zeile
hier geht der Text weiter
und hier ebenfalls

Ob " oder ' ist hierbei egal solange Sie durchgängig bei dem selben Zeichen bleiben.

So können Sie "schöne" (heißt: vorformatierte) Textausgaben gestalten.

Hauptsächlich genutzt wird diese Möglichkeit aber für mehrzeilige Kommentare. Den Text einer Variablen zuzuweisen ist dafür nicht erforderlich:

"""
Dies 
ist
ein
mehrzeiliger 
Kommentar
"""

print()[Bearbeiten]

Mit print() geben Sie einen Text auf dem Standardausgabekanal (englisch: 'Standard out' oder 'stdout') aus: Ihren Bildschirm. Während wir im Deutschen bei dem Wort "drucken" eher an den Papierausdruck denken, wird im Englischen auch auf den Bildschrim "gedruckt", daher der Name 'print'.

Wir können print() beliebig viele Texte und Variablen als sogenannte Parameter (Parameter stehen innerhalb der () einer Funktion) übergeben:

begr = "Hallo"
verab = "und Tschüss."
print(begr, "Unbekannt", ",", verab)
======================= RESTART: D:/AA_Projekte/Programmierung/print.py =======================
Hallo Unbekannt , und Tschüss.

Standardmäßig trennt print() die Eingaben mit einem Leerzeichen. Mit dem namenlichen Paramter "sep" können wir das Ändern:

begr = "Hallo"
verab = "und Tschüss."
print(begr, "Unbekannt", verab, sep="😀")
======================= RESTART: D:/AA_Projekte/Programmierung/print.py =======================
Hallo😀Unbekannt😀und Tschüss.

Print() fügt an das Ende jeder Ausgabe einen Zeilenumbruch ("\n" - english 'newline') an. Rufen wir print() ohne Parameter auf, erhalten wir also eine Leerzeile:

print()
print("zweite Zeile")
print()
print("Zeile vier")
======================= RESTART: D:/AA_Projekte/Programmierung/print.py =======================

zweite Zeile

Zeile vier

Mit dem Parameter end können wir dieses Verhalten kontrollieren:

print(end="")
print("zweite Zeile", end="§§")
print("Zeile vier")
======================= RESTART: D:/AA_Projekte/print.py =======================
zweite Zeile§§Zeile vier

input()[Bearbeiten]

Kommen wir zu dem Gegenteil der Ausgabe auf den Bildschirm - der Eingabe über die Tastatur. Dazu stellt uns Python die input()-Funktion zur Verfügung. Diese hält das Programm an, bis Sie etwas eingegeben und/oder die Entertaste gedrückt haben:

name = input("Bitte geben Sie Ihren Namen ein: ")
anrede = "Hallo"
text = "wie geht's?"
print(anrede, name, text)
================ RESTART: D:/AA_Projekte/Programmierung/input.py ===============
Bitte geben Sie Ihren Namen ein: wikibooks
Hallo wikibooks wie geht's?

Je nachdem, welchen Namen Sie eingegeben haben, unterscheidet sich natürlich die Ausgabe.

Das Eingabeformat[Bearbeiten]

Wir können nun unsere neue Fähigkeit nutzen, um kleine, interaktive Rechenprogramme zu schreiben:

radius = input("Bitte geben Sie den Radius ein: ")
durchmesser = 2 * 3.14 * radius
print("Der Durchmesser ist: ", durchmesser)

Statt des erwarteten Ergebnisses erhalten wir jedoch eine Fehlermeldung:

================ RESTART: D:/AA_Projekte/Programmierung/input.py ===============
Bitte geben Sie den Radius ein: 5
Traceback (most recent call last):
  File "D:/AA_Projekte/Programmierung/input.py", line 2, in <module>
    durchmesser = 2 * 3.14 * radius
TypeError: can't multiply sequence by non-int of type 'float'

Die Funktion input() liefert uns immer einen String zurück:

eingabe = input("Bitte geben Sie den Radius ein: ")
print(type(eingabe))
Bitte geben Sie den Radius ein: 5
<class 'str'>

Konvertierung I[Bearbeiten]

Wir müssen daher den String in eine Zahl umwandeln ("konvertieren"):

eingabe = int(input("Bitte geben Sie den Radius ein: "))
print(type(eingabe))
Bitte geben Sie den Radius ein: 5
<class 'int'>

Und damit funktioniert unser kleines Programm wie erwartet:

radius = int(input("Bitte geben Sie den Radius ein: "))
durchmesser = 2 * 3.14 * radius
print("Der Durchmesser ist: ", durchmesser)
================ RESTART: D:/AA_Projekte/Programmierung/input.py ===============
Bitte geben Sie den Radius ein: 5
Der Durchmesser ist:  31.400000000000002

Die folgende Tabelle zeigt die Konvertierungsfunktionen für die Datentypen, die wir schon kennen:

Konvertierungsfunktionen
Datentyp Funktion
integer int()
float float()
string str()

Zusammenfassung[Bearbeiten]

Sie haben den neuen Datentyp String kennengelernt und die verscheidenen Arten, Strings zu erstellen. Ebenso können Sie mit input() Benutzeriengaben lesen und mit print() Dinge auf dem Monitor ausgeben. Zudem wissen Sie jetzt, wie Sie zwischen den Datentypen konvertieren können. Da swich mit Buchstaben eine Menge anfangen lässt, kümmern wir uns im nächsten Kapitel ganz um Strings.