Python Python3 Eingabe wird nicht als Variable gesetzt

Joe Joke

Cadet 2nd Year
Registriert
Nov. 2015
Beiträge
17
Hi,

Ich bin gerade dabei Python zu lernen und will ein kleines Script schreiben. Das Problem ist nur, dass bei dem Punkt "Variable = input()" die User Eingabe nicht als Variable übernommen wird.

Der Code sieht wie folgt aus:
Python:
#!/usr/bin/python3
# coding=utf-8
import __builtin__

print("Möchten Sie Fortsetzen? Ja(J)/Nein(N) ")
Eingabe = input()

while Entscheidung not in ("Fortsetzen", "Abbruch"):

     if Eingabe in ("Ja", "ja", "j", "J"): Entscheidung = Fortsetzen

     elif Eingabe == Nein or Eingabe == nein or Eingabe == n or Eingabe == N: Entscheidung = Abbruch

     else:
        Eingabe = input("Ihre Eingabe war falsch. Bitte geben Sie Ja(J) oder Nein(N) ein! ")

Ich hab den Code jetzt n bissel vereinfacht dargestellt, aber im Grunde 1:1 das selbe.

Kann mir jemand sagen, was genau ich falsch gemacht habe? Bekomme immer nur den Fehler:

Code:
Traceback (most recent call last):

  File "/root/.p2/pool/plugins/org.python.pydev.core_7.2.1.201904261721/pysrc/_pydev_runfiles/pydev_runfiles.py", line 468, in __get_module_from_str

    mod = __import__(modname)

  File "/root/workspace/Linux_System_Updater_0.2.0/src/System-Updater/__init__.py", line 11, in <module>

    Eingabe = input("")

  File "/root/.p2/pool/plugins/org.python.pydev.core_7.2.1.201904261721/pysrc/pydev_sitecustomize/sitecustomize.py", line 179, in input

    return eval(raw_input(prompt))

  File "<string>", line 1, in <module>

NameError: name "j" is not defined

ERROR: Module: Script-Name could not be imported (file: /Pfad/zum/Script)

done

Mir ist auch aufgefallen, dass der Anfangs Code (Print... -> Variable = input()) 2X ausgeführt wird, ich also 2X den Input gebe, beim 2.X Input allerdings erst der Fehler kommt. Habe gestern den halben Tag versucht den Fehler zu finden, aber bisher konnte ich noch keine Auffälligkeiten finden, die zu dem Fehler führen.

Peace
 
Zuletzt bearbeitet:
Variable2 ist in deinem Beispiel nicht definiert und du möchtest es aber in while verwenden. Leg Variable2 davor einfach als leeren string an
 
abcddcba schrieb:
EDIT: ich war blind aber korrekt einruecken solltest du erstmal
Der Code ist genauso wie oben geschrieben. Ich hab bloß die Variablen und den Text geändert, da der Code sonst ein wenig länger wäre. Hab den Code so nur abgekürzt.

guggi4 schrieb:
Variable2 ist in deinem Beispiel nicht definiert und du möchtest es aber in while verwenden. Leg Variable2 davor einfach als leeren string an
Werde Ich gleich einmal testen. Dank dir.
 
if Variable in ("Ja", "ja", "j", "J"): Varibale2 = Wort1

Variable
 
  • Gefällt mir
Reaktionen: abcddcba
ich sage nur dass der Code so wie jetzt in der Frage erstmal falsch eingerueckt ist. Du hast ihn garantiert hier editiert. Kannst es ja gerne ausprobieren, kopiere von hier das Snippet und fuehre aus aus. Python wird meckern wegen Indentation

Achja, und Typo auch noch drin: Variable2 vs Varibale2
 
Zuletzt bearbeitet:
Am besten fängst du an zu lernen,
was der Unterschied zwischen einer Variable und einem String ist.

while Variable2 not in ("Wort1", "Wort2") => die Variable "Variable2" gibt es nicht
if Variable in ("Ja", "ja", "j", "J"): Varibale2 = Wort1 => die Variable "Wort1" gibt es nicht
elif Variable == Nein or Variable == nein or Variable == n or Variable == N: Variable2 = Wort2 => die Variablen "Nein", "nein", "n" und "N" gibt es nicht
 
abcddcba schrieb:
ich sage nur dass der Code so wie jetzt in der Frage erstmal falsch eingerueckt ist. Du hast ihn garantiert hier editiert. Kannst es ja gerne ausprobieren, kopiere von hier das Snippet und fuehre aus aus. Python wird meckern wegen Indentation

Achja, und Typo auch noch drin: Variable2 vs Varibale2
Im eigentlichen Code ist alles richtig eingedrückt. Die Variablen im eigentlichen Code sind einmal "Eingabe", welche beim ersten input() eingesetzt wird, und Entscheidung, welche beim 2. input() eingesetzt wird. Variable1 und Variable2 sind hier nur als Platzhalter gemeint.
 
das else ist in deinem beispiel um ein leerzeichen zu wenig eingerückt aber häng dich nicht daran auf.
wie @mastaqz bereits geschrieben hat, verwendest du ständig undefinierte variablen. Hab bereits nach der ersten undefinierten Variable2 zu lesen aufgehört😅
Abgesehen davon ist der Traceback ziemlich schwer nachzuvollziehen, wenn du dazu nicht den selben code postest

edit: ich zähl dir mal alle undefinierten variablen auf, die dir eine exception werfen werden:
Variable2, Wort1, Nein, nein, n, N, Wort2
 
Zuletzt bearbeitet:
mastaqz schrieb:
Am besten fängst du an zu lernen,
was der Unterschied zwischen einer Variable und einem String ist.

while Variable2 not in ("Wort1", "Wort2") => die Variable "Variable2" gibt es nicht
if Variable in ("Ja", "ja", "j", "J"): Varibale2 = Wort1 => die Variable "Wort1" gibt es nicht
elif Variable == Nein or Variable == nein or Variable == n or Variable == N: Variable2 = Wort2 => die Variablen "Nein", "nein", "n" und "N" gibt es nicht
An sich soll ja die jeweilige User Eingabe zur Variable "Ja, ja, J, j, Nein, nein N oder n" werden, die in Variable1 gespeichert werden soll.
In verschiedenen Python Beispielcodes, die ich auf meiner Lösungs Suche gesehen habe, wurde das ganze so gelöst.

Wie schon erwähnt, die User Eingabe ganz am Anfang soll genutzt werden um in der while Schleife die nächste Variable zu setzen, damit der Code den nächsten Abschnitt anschließend bearbeitet. Die Variablen im Beispielcode sind jetzt auch nur Beispielhaft so gesetzt.
 
Joe Joke schrieb:
Im eigentlichen Code ist alles richtig eingedrückt. Die Variablen im eigentlichen Code sind einmal "Eingabe", welche beim ersten input() eingesetzt wird, und Entscheidung, welche beim 2. input() eingesetzt wird. Variable1 und Variable2 sind hier nur als Platzhalter gemeint.
Ja, aber es wär schon schön wenn du hier ausführbaren Code postest, meinst du nicht? Wie soll man denn sonst den eigentlichen Fehler finden. Kann ja keine wissen das es bei dir nicht ein Type ist, oder vielleicht ist auch nicht das Problem wie hier, dass du Variable2 nicht definiert hast? Kannst du den Code in deiner Frage bitte nochmal kurz editieren, so dass wir ein minimales, funktionierendes Beispiel haben, was deinem Code entspricht? Sonst wird das hier ein Ratespiel mit falschen Hinweisen, weil es bei dir im richtigen Code ganz anders ist...

https://en.wikipedia.org/wiki/Minimal_working_example
 
  • Gefällt mir
Reaktionen: BeBur
Poste deinen kompletten code und lass dir auch helfen, ansonsten ergibt das ganze hier keinen Sinn.
der von dir gepostete Code funktioniert nicht mal annähernd
 
guggi4 schrieb:
Poste deinen kompletten code und lass dir auch helfen, ansonsten ergibt das ganze hier keinen Sinn.
der von dir gepostete Code funktioniert nicht mal annähernd
Hab den Code nochmal geändert. Nur der jeweilige Ausgabe Text wurde von mir ein wenig gekürzt, ansonsten ist es 1:1 der selbe Code.
 
Was verwendest du denn für einen editor? Meiner zeigt mir direkt beim reinkopieren deine ganzen undefinierten Variablen an, wie man dir bereits vorhin gesagt hat.
Willst du den code selbst hinbekommen oder reichts dir, wenn ihn jemand in 10 sek korrigiert?

Python:
import sys
print("Möchten Sie Fortsetzen? Ja(J)/Nein(N) ")
Eingabe = input()
Entscheidung = "" #vorher Entscheidung definieren, ansonsten kannst du es in while nicht verwenden

while Entscheidung not in ("Fortsetzen", "Abbruch"):

     if Eingabe in ("Ja", "ja", "j", "J"):
        Entscheidung = "Fortsetzen" #auf einen string setzen, nicht auf eine undefinierte variable Entscheidung

     elif Eingabe == "Nein" or Eingabe == "nein" or Eingabe == "n" or Eingabe == "N":
        Entscheidung = "Abbruch" #selbe wie oben, mit string vergleichen, nicht mit undef. Variable
        sys.exit() #beendet das programm
     else:
        Eingabe = input("Ihre Eingabe war falsch. Bitte geben Sie Ja(J) oder Nein(N) ein! ")
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: LieberNetterFlo
guggi4 schrieb:
Was verwendest du denn für einen editor? Meiner zeigt mir direkt beim reinkopieren deine ganzen undefinierten Variablen an, wie man dir bereits vorhin gesagt hat.
Willst du den code selbst hinbekommen oder reichts dir, wenn ihn jemand in 10 sek korrigiert?
Nutze zum testen Editor Sublime, ansonsten schreib ich das ganze in Eclipse (um bei dem Thema das Programm schonmal besser kennen zu lernen).
Im Prinzip will ich das ganze verstehen. Wenn jemand den Code schnell korrigiert sehe ich, denke ich, den Fehler und verstehe nochmal besser, wo mein Fehler nun lag.
 
hab dir in den comments dazugeschrieben, was/warum geändert wurde
 
  • Gefällt mir
Reaktionen: LieberNetterFlo
Hej,
hallo CB-Forum - mein erster Post, nachdem ich hier seit vieelen Jahren lese.

Ich programmiere garnicht in Python, aber hab das beschriebene Problem gerade mal probiert und recherchiert (kann helfen):
input() wertet die Eingabe als Python-Code aus, was Du suchst ist raw_input()

Gern geschehen

Gruss
Phrasendreher
 
guggi4 schrieb:
hab dir in den comments dazugeschrieben, was/warum geändert wurde
Dank dir schon mal. Kann das Problem so schon mal besser nachvollziehen.

Phrasendreher schrieb:
Hej,
hallo CB-Forum - mein erster Post, nachdem ich hier seit vieelen Jahren lese.

Ich programmiere garnicht in Python, aber hab das beschriebene Problem gerade mal probiert und recherchiert (kann helfen):
input() wertet die Eingabe als Python-Code aus, was Du suchst ist raw_input()

Gern geschehen

Gruss
Phrasendreher
Meines Wissens nach ist dies bei Python 2.X so. Bei Python 3.X wurde das input() Verhalten zu dem von raw_input() in Python 2.X geändert.
 
Joe Joke schrieb:
Meines Wissens nach ist dies bei Python 2.X so. Bei Python 3.X wurde das input() Verhalten zu dem von raw_input() in Python 2.X geändert.
Erwischt, hatte es mit Python2.7 getestet.

Und da die Fehlermeldung absolut dazu passt (NameError: name 'j' is not defined):
Moeglicherweise hast Du Deinen Code ebenfalls mit Python2 ausgefuehrt?
In Z. 13 Deines Fehlerdumps steht
Joe Joke schrieb:
return eval(raw_input(prompt))
und falls ich mich nicht taeusche gibt es raw_input() in Python3 garnicht mehr.

Zumindest wuerde das Deinen Fehler 100%ig erklaeren.
 
  • Gefällt mir
Reaktionen: BeBur

Ähnliche Themen

Zurück
Oben