Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
1 Einleitung
2 Überblick über Python
3 Die Arbeit mit Python
4 Der interaktive Modus
5 Grundlegendes zu Python-Programmen
6 Kontrollstrukturen
7 Das Laufzeitmodell
8 Basisdatentypen
9 Benutzerinteraktion und Dateizugriff
10 Funktionen
11 Modularisierung
12 Objektorientierung
13 Weitere Spracheigenschaften
14 Mathematik
15 Strings
16 Datum und Zeit
17 Schnittstelle zum Betriebssystem
18 Parallele Programmierung
19 Datenspeicherung
20 Netzwerkkommunikation
21 Debugging
22 Distribution von Python-Projekten
23 Optimierung
24 Grafische Benutzeroberflächen
25 Python als serverseitige Programmiersprache im WWW mit Django
26 Anbindung an andere Programmiersprachen
27 Insiderwissen
28 Zukunft von Python
A Anhang
Stichwort

Download:
- ZIP, ca. 4,8 MB
Buch bestellen
Ihre Meinung?

Spacer
 <<   zurück
Python von Peter Kaiser, Johannes Ernesti
Das umfassende Handbuch - Aktuell zu Python 2.5
Buch: Python

Python
gebunden, mit CD
819 S., 39,90 Euro
Galileo Computing
ISBN 978-3-8362-1110-9
Pfeil 9 Benutzerinteraktion und Dateizugriff
  Pfeil 9.1 Bildschirmausgaben
  Pfeil 9.2 Tastatureingaben
  Pfeil 9.3 Dateien
    Pfeil 9.3.1 Datenströme
    Pfeil 9.3.2 Daten aus einer Datei auslesen
    Pfeil 9.3.3 Daten in eine Datei schreiben
    Pfeil 9.3.4 Verwendung des Dateiobjekts


Galileo Computing - Zum Seitenanfang

9.2 Tastatureingaben  topZur vorigen Überschrift

Sie erinnern sich sicherlich noch an unser kleines Beispielprogramm zum Einstieg in die Sprache Python, das Spiel »Zahlenraten«. Dort haben wir bereits eine Tastatureingabe des Benutzers verwendet. Dazu wurde folgender Code verwendet:

guess = input("Raten Sie: ")

Hier wird zunächst der String "Raten Sie:" auf dem Bildschirm ausgegeben und ein Eingabeprompt angezeigt. Jetzt wird der Programmablauf so lange angehalten, bis der Benutzer eine Eingabe getätigt und diese mit bestätigt hat. Anschließend wird der eingelesene Wert mit der Referenz guess verknüpft.

Bei der Verwendung von input müssen Sie vor allem eine Besonderheit beachten: Alle Eingaben des Benutzers werden zunächst als Python-Code interpretiert und können erst danach an eine Referenz gebunden werden. So würde guess hier nach der Eingabe von »2+2« keineswegs einen String mit dem Wert "2+2" referenzieren, sondern eine ganze Zahl mit dem Wert 4.

Diese Eigenschaft von input lässt sich in unserem Beispiel zum »Cheaten« verwenden, indem der Name der Referenz auf den zu ratenden Begriff eingegeben wird:

Raten Sie: secret 
Super, Sie haben es in 1 Versuchen geschafft!

Was ist da genau passiert? Nun, dazu sollten wir uns zunächst die ersten paar Zeilen des Programms vergegenwärtigen:

secret = 1337 
guess = 0 
i = 0 
while guess != secret: 
    guess = input("Raten Sie: ") 
    [...]

Wir erinnern uns, dass die Eingabe des Spielers bei Verwendung von input als Python-Code interpretiert wird. Sie könnten sich also vorstellen, dass input("Raten Sie: ") durch die Eingabe ersetzt wird. Nach der Eingabe des Spielers referenzieren sowohl guess als auch secret denselben Wert, nämlich die geheime Zahl 1337. Damit ist die Abbruchbedingung der Schleife sofort erfüllt und der Spieler hat das Spiel gewonnen, ohne die geheime Zahl erraten zu haben.

Das ist natürlich nicht im Sinne des Programmierers und kann, je nachdem in welchem Kontext ein Programm eingesetzt wird, als massive Sicherheitslücke betrachtet werden. In der Regel ist es daher nicht erwünscht, dass eine Eingabe des Benutzers interpretiert wird, sondern man möchte sie als String weiterverarbeiten können. Für diesen Zweck existiert in Python eine Alternative zu input namens raw_input:

guess = raw_input("Raten Sie: ")

Nach der Verwendung von raw_input referenziert guess die Eingabe als String. Sollte der Benutzer also, wie im eingangs erwähnten Beispiel, »2+2« eingeben, so referenziert guess einen String mit dem Wert "2+2". Allerdings ist es mit dem Ersetzen von input durch raw_input noch nicht ganz getan, denn es wird im weiteren Verlauf des Spiels erwartet, dass guess eine ganze Zahl und keinen String referenziert. Dazu müssen wir das Ergebnis von raw_input explizit in einen Wert des Datentyps int konvertieren:

guess = int(raw_input("Raten Sie: "))

Spätestens jetzt werden alle nicht numerischen Eingaben mit einer Fehlermeldung quittiert:

Raten Sie: abc 
Traceback (most recent call last): 
  File "<stdin>", line 1, in <module> 
ValueError: invalid literal for int() with base 10: 'abc'

Von den Verwendungsmöglichkeiten her sind input und raw_input gleich. Der Text, der vor der Eingabe auf dem Bildschirm ausgegeben wird, ist optional und kann ersatzlos gestrichen werden:

guess = raw_input()

Dies hat eine Eingabe ohne vorherigen Prompt zur Folge.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.






 <<   zurück
  
  Zum Katalog
Zum Katalog: Python






Python
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Linux






 Linux


Zum Katalog: Ubuntu GNU/Linux






 Ubuntu GNU/Linux


Zum Katalog: Praxisbuch Web 2.0






 Praxisbuch Web 2.0


Zum Katalog: UML 2.0






 UML 2.0


Zum Katalog: Praxisbuch Objektorientierung






 Praxisbuch Objektorientierung


Zum Katalog: Einstieg in SQL






 Einstieg in SQL


Zum Katalog: IT-Handbuch für Fachinformatiker






 IT-Handbuch für Fachinformatiker


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo





Copyright © Galileo Press 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de