Python Code, wo ist mein Fehler?
Bin gerade noch am „Anfang“ meiner Python Lernreise. Schaut euch bitte meinen Code an und die Erste Ausgabe die kommt.
Eigentlich möchte ich, das man gefragt wir ob man einen Account hat, wenn ja dann soll man sich anmelden und die angabe „du hast dich eingelogt“ soll kommen
wenn jedoch nicht, dann soll man erst ein account erstellen der in der Tupel hinzufügt wird, nach der Eingabe.
Danach soll man nochmals gefragt werden…
4 Antworten
Dein Programm startet mit dem ersten Befehl, und das ist die Wertzuweisung an wert1. Das was davor steht wird erst ausgeführt, wenn Du mit
angemeldet = login(..)
die definierte Prozedur aufrufst. Vorher hast Du sie nur definiert, ausgeführt wird sie noch nicht.
Python arbeitet einfach gesagt, den Programmcode "von oben nach unten" ab. Deine Prozedur "login", wird erst dann aufgerufen (bzw. ausgeführt), wenn du diese (in deinem Code in Zeile 19) im Hauptprogramm aufrufst.
Da du aber zuerst einen input bei den Variablen wert1 und wert2 verlangst, wird deine Prozedur erst danach aufgerufen und deine gewünschte Frage gestellt, ob man bereits einen Account hat.
Bei weiteren Fragen melde dich gerne
Gruß
Nur weil du die login Funktion definierst wird diese nicht ausgeführt. Der Code startet in Zeile 17, weil du dort den ersten code hast der nicht in einer Funktion ist. Du musst die Abfrage ob ob man einen Account hat davor ausführen. Außerdem stimmen noch ein par andere Dinge mit dem Code nicht. Der korrekte Code würde so aussehen:
logindaten = [("Karl", "Gustav"), ("Lina", "Huhn")] # Die logindaten müssen Außerhalb der Funktion definiert sein, da der inhalt der variable solbald die login Funktion beendet ist weg wäre.
def login (name, passwort):
for zugang in logindaten:
if zugang[0] == name and zugang[1] == passwort:
print("Login ergfolgreich")
return True # Da du nach der Funktion in der angemldet Variable speichern möchtest ob man angemeldet ist musst du auch True oder False zurückgeben (Da erfolgreich hier True)
else:
print("Der angegbene Account und das Passwort stimmen nicht überein!")
return False # Da hier nicht erfolgreich False
# Hier startet der Code
abfrage = input("Hast du schon einen Account? (ja/nein):")
if abfrage == "nein":
n = input("Okay, dann gib bitte deinen Namen an:")
p = input("bitte gib jetzt dein Passwort an:")
logindaten += (n, p) # Wenn du logindaten = [(n, p)] ausfürst wird der inhalt der Variable überschrieben und alle anderen logins würden nicht mehr gehen (logindaten += (n, p) is dasselbe wie logindaten = logindaten + (n, p))
print("Du hast dich eingeloggt")
else:
wer1 = input("Bitte gib deinen Accoutn namen ein:")
wer2 = input("Bitte gib dein Passwort ein:")
angemeldet = login(wer1, wer2)
In den Kommentaren hab ich dir die Änderungen erklärt.
Oha, Dankeschön
Die version mit logindaten+= (n,p) kannte ich garnicht
Vllt das ,,+logindate" in Zeile 2?