ich hab ein script was ein passwort abfragen soll aber da kommt nicht passwort ist richtig?

3 Antworten

Dieser Ausdruck:

passwort5 == 1 and 9 and 2 and 3

macht etwas anderes, als du erwartest. Erst vergleicht er passwort5 mit dem Wert 1, danach schaut er, ob jeweils 9, 2 und 3 wahre Ausdrücke sind.

Des Weiteren speicherst du nirgendwo auch nur eine Eingabe vom Nutzer. Die Variable passwort5 bleibt ohne konkreten Wert.

Die einfachste Lösung wäre es, den Nutzer nur einmal die komplette Folge eingeben zu lassen und mit einem String-Vergleich zu prüfen:

def lese_passwort():
    return input("Gib dein Passwort ein: ")

passwort5 = lese_passwort()

if passwort5 == "1923":
  print("Das Passwort ist richtig.")
else:
  print("Das Passwort ist falsch.")

Bei Aufruf der Funktion wird der eingelesene Wert via return zurückgegeben und in die Variable passwort5 gespeichert.

Beachte in dem Zuge, dass ich der Funktion einen nun passenden, aussagekräftigen Namen gegeben habe.

Wenn du hingegen wirklich jedes Zeichen einzeln eingeben lassen möchtest, mach es so:

def lese_passwort():
  eingabe = input("Gib dein Passwort ein: ")
  eingabe += input("Gib dein Passwort ein: ")
  eingabe += input("Gib dein Passwort ein: ")
  eingabe += input("Gib dein Passwort ein: ")
  return eingabe

passwort5 = lese_passwort()

if passwort5 == "1923":
  print("Das Passwort ist richtig.")
else:
  print("Das Passwort ist falsch.")

Im Vergleich zu obigem Lösungsvorschlag halte ich diesen Weg für nutzerunfreundlich, da die Eingabe in mehrere Schritte unterteilt und schlecht bezeichnet ist.

Versuchs so:

def passwort5():
        return int(input("gib dein passwort ein "))

if passwort5() == 1923:
        print("passwort ist richtig ")
else:
        print("passwort ist falsch")

FCKmyLYF 
Beitragsersteller
 11.08.2021, 22:29

ja aber ich wolte 4 abfragen aber ok

andie00  11.08.2021, 22:34
@FCKmyLYF
def passwort5():
    p =  input("gib dein passwort ein")
    p += input("gib dein passwort ein")
    p += input("gib dein passwort ein")
    p += input("gib dein passwort ein")
    return int(p)

if passwort5() == 1923:
        print("passwort ist richtig ")
else:
        print("passwort ist falsch")
GrizzlyMove  11.08.2021, 22:24

Jetzt kommt bei mir Instant Passwort ist falsch

GrizzlyMove  11.08.2021, 22:27
@GrizzlyMove

Man kann hald noch Passwort5() ergänzen aber dann ist dasselbe problem wieder

andie00  11.08.2021, 22:31
@GrizzlyMove

Bist du dir sicher den Code richtig zu haben?

z.B. nicht die Klammern im if vergessen

if passwort5() ...
GrizzlyMove  11.08.2021, 22:33
@andie00

Achso ja daran lag es. Bin eben selber noch ein Grünschnabel auf dem Gebiet

andie00  11.08.2021, 22:47
@GrizzlyMove

Viel Spass noch beim lernen.

Das Ganze kann man auch anders lösen, um Fehler bei der Eingabe von "Nicht Zahlen" (z.B. Buchstaben) zu vermeiden:

def passwort5():
        return input("gib dein passwort ein ")

if passwort5() == "1923":
        print("passwort ist richtig ")
else:
        print("passwort ist falsch")

Hier werden Strings anstelle von Integers verglichen.

Mir wäre der Fehler auch nicht bekannt. Zur nachfrage das ist schon Python oder? Bin selber keine Programmier Profi. Ich kann das selber mal kurz ausprobieren.

Woher ich das weiß:eigene Erfahrung – Ich möchte anderen helfen und mein Wissen teilen

FCKmyLYF 
Beitragsersteller
 11.08.2021, 22:07

ja ist python