Frage zu Variablen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Sephiroth
User
Beiträge: 28
Registriert: Freitag 3. November 2006, 00:12

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
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.
Sephiroth
User
Beiträge: 28
Registriert: Freitag 3. November 2006, 00:12

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
querdenker
User
Beiträge: 424
Registriert: Montag 28. Juli 2003, 16:19
Wohnort: /dev/reality

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
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

input (und raw_input) sind ein Relikt aus den Anfangszeiten von Python. Du musst dir einfach merken, immer raw_input zu verwenden.
Sephiroth
User
Beiträge: 28
Registriert: Freitag 3. November 2006, 00:12

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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__)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

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.
Antworten