staging.inyokaproject.org

Python3 Eingabe wird nicht als Variable gesetzt

Status: Ungelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

JoeJoke

Anmeldungsdatum:
21. Dezember 2015

Beiträge: 11

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:

#!/usr/bin/python3
# coding=utf-8
import __builtin__

print("Text")
Variable = input()

while Variable2 not in ("Wort1", "Wort2"):

     if Variable in ("Ja", "ja", "j", "J"): Varibale2 = Wort1

     elif Variable == Nein or Variable == nein or Variable == n or Variable == N: Variable2 = Wort2

    else:
        Variable = input("Ihre Eingabe war falsch. Bitte geben Sie ... 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:

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

Humbi

Anmeldungsdatum:
14. Juni 2014

Beiträge: 76

Hallo Joe,

ich bin zwar auch noch nicht viel weiter bei Python wie du, aber mir sind gleich mehrere Sachen aufgefallen.

  • Was importierst du in Zeile 3? Für dein Script (noch) nicht erforderlich.

  • Zeile 10 steht "Varibale" statt "Variable".

  • Zeile 12 willst du Variablen mit Strings vergleichen. Ohne " vergleichst du aber zwei Variablen.

  • Zeile 14 andere Einrückung des "else".

So funktionierts jedenfalls:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#!/usr/bin/python3
# coding=utf-8

print("Text")
Variable=input()
Variable2=""

while Variable2 not in ("Wort1", "Wort2"):
   if Variable in ("Ja", "ja", "j", "J"):
      Variable2 = "Wort1"
   elif Variable == "Nein" or Variable == "nein" or Variable == "n" or Variable == "N":
      Variable2 = "Wort2"
   else:
      Variable = input("Ihre Eingabe war falsch. Bitte geben Sie ... ein! ")
   print(Variable2)

Einer der Profis wird sicherlich noch vorbei schauen. 👍

Gruß

Neral

Anmeldungsdatum:
3. Oktober 2007

Beiträge: 230

@JoeJoke: Wo führst du das Skript denn aus? Das sieht so aus, als wenn da irgendwas in der Python-Umgebung rumgepfuscht hätte und die Funktion input durch einen Nachbau von input aus Python 2 ersetzt hätte.

Was passiert, wenn du das Programm im Terminal mit python3 skript.py startest?

Es ist übrigens keine gute Idee, als Root zu arbeiten und auch noch graphische Programme zu starten.

Wenn du Code zeigst, dann stelle bitte sicher, dass der Code auch den Fehler zeigt, den du bekommst. Außerdem sollte die Fehlermeldung zum gezeigten Code passen, damit man das ganze leichter nachvollziehen kann. Je leichter du es potentiellen Helfern machst, desto höher sind deine Chancen, schnell Hilfe zu bekommen. In diesem Fall hier ist zum Beispiel die Einrückung kaputt.

import __builtin__ sollte, wie Humbi anmerkt, nicht nötig sein, weil das Modul genau die Sachen enthält, die sowieso schon in Python eingebaut sind.

Antworten |