Seite 1 von 1

Frage zu Variablen

Verfasst: Freitag 3. November 2006, 00:23
von Sephiroth
Hallo,
also ich habe heute mit Python angefangen und es stellt sich bei mir eine Frage:
Wieso bekomme ich bei folgendem Code:

Code: Alles auswählen

a = input('Gib einen String ein:')
print a
eine Fehlermeldung wenn ich eine Zeichenkette eingebe und keine Zahl.

Fehlermeldung wenn ich 'd' eingebe:

Code: Alles auswählen

Traceback (most recent call last):
  File "****/test.py", line 1, in <module>
    a = input('Gib eine Zahl ein:')
  File "<string>", line 1, in <module>
NameError: name 'd' is not defined
Ich habe doch nirgends die Variable als Integer dekliniert.
Wieos nimmt er keine Strings an.

Hoffe jmd versteht was ich meine.^^
Also zusammenfassend meine Frage: Wieso nimmt die Variable a nur Zahlen und keine Strings?

Gruss

Verfasst: Freitag 3. November 2006, 00:39
von BlackJack
`input()` nimmt auch Zeichenketten, aber `d` ist keine. `input()` wertet das eingegebene nämlich als Python-Ausdruck aus!

Code: Alles auswählen

a = 42
b = input()   # Hier jetzt mal a * 3 eingeben und staunen. :-)
print b
Du solltest besser `raw_input()` nehmen, was wirklich nur die eingegebene Zeichenkette 1:1 liefert.

Verfasst: Freitag 3. November 2006, 00:53
von Sephiroth
Erstmal danke für die Antwort, aber verstehe trotzdem nicht wieso
ich einen Fehler bekommen habe.
Ich habe "d" eingegeben(ohne Anführungszeichen..).
Das ist doch ein String oder?.
Mit raw_input funktioniert alles so wie ichs mir gedacht habe^^

Danke für noch folgende Antworten....;)

Gruss

Verfasst: Freitag 3. November 2006, 01:25
von querdenker
Naja, hat BlackJack doch geschrieben.

input geht davon aus, das das eingegebene gültiger python-code ist.
Beispiel:

Code: Alles auswählen

a = input('will code : ')
print a
Wenn du das ausführst, bekommst du folgendes:

will code : 'test' * 3

und in der Ausgabe erscheint

testtesttest

hth, querdenker

Verfasst: Freitag 3. November 2006, 21:36
von Joghurt
input (und raw_input) sind ein Relikt aus den Anfangszeiten von Python. Du musst dir einfach merken, immer raw_input zu verwenden.

Verfasst: Sonntag 5. November 2006, 16:44
von Sephiroth
input geht davon aus, das das eingegebene gültiger python-code ist.
achso, jetzt habe ich es verstanden... Firma dankt..

ps:kann mir jmd einen Link geben wo alle(oder sehr viele) python befehle aufgeführt sind.
Habe durch google nichts gefunden.
ps2:Hier eines meiner ersten "Programme", vllt käönnt ihr mir ja ein paar Statements geben, was man verbessern könnte(am Programmierstil o.ä)
Link:http://www.ubuntuusers.de/paste/4935/
Habe leider noch keinen Befehl für clearscreen oder so gefunden..^^

Gruss

Verfasst: Sonntag 5. November 2006, 17:21
von Leonidas
Sephiroth hat geschrieben:ps:kann mir jmd einen Link geben wo alle(oder sehr viele) python befehle aufgeführt sind.

Code: Alles auswählen

dir(__builtins__)

Verfasst: Sonntag 5. November 2006, 18:44
von Y0Gi
http://docs.python.org/ - am wichtigsten sind die drei Abschnitte "Tutorial", "Library Reference" und "Global Module Index", da sie eine Einführung in grundlegende Python-Anweisungen geben, Python-Datentypen und ähnliches beschreiben sowie alle Pakete und Module auflisten, die in der Python-Standarddistribution enthalten sind. Letzteres schaust du dir an, wenn du Dinge nutzen willst, die in der Regel von der Programmiersprache unabhängig sind, etwa XML, Email, HTTP oder FTP verwenden willst. Ich kann nur empfehlen, da einfach mal alle Module durchzugehen (also zumindest die Beschreibung jedes Moduls zu lesen) um einen Überblick zu erhalten, was die so können. Wenn man dann sowas machen möchte, weiß man direkt, dass und wo so etwas bereits dabei ist.