Seite 1 von 1

Programmcode zeigt Fehler!!

Verfasst: Freitag 4. Dezember 2020, 09:36
von Kla-Sur
Hallo und guten Morgen,

kann mir jemand den Fehler zeigen:

def registrierung (nutzername, passwort):
logindaten = [("karl01", "abcde"), ("*susi*",
"3107"),("00xyz00", "a7r9f3"), ("martin.mueller", "martin")]

for zugang in logindaten:
if zugang[0]==nutzername and zugang[1]==passwort:
print ("Login erfolgreich!")
return True
print ("Nutzernamen und Passwort stimmen nicht überein!")
return False
wert1 = input("Geben Sie bitte Ihren Nutzernamen ein: ")
wert2 = input("Geben Sie bitte Ihr Passwort ein: ")
angemeldet = registrierung(wert1, wert2)


Da gibt es den Fehler in Line 6 ?
Was ist daran falsch?

Gruß Klaus

Re: Programmcode zeigt Fehler!!

Verfasst: Freitag 4. Dezember 2020, 09:41
von Bolitho
Hallo Klaus, kannst du bitte den Code zwischen die Code-Tags (Button </>) setzen und auch die Fehlermeldung ergänzen?

Re: Programmcode zeigt Fehler!!

Verfasst: Freitag 4. Dezember 2020, 09:45
von Sirius3
Den Fehler verrät Dir Die Fehlermeldung, die Du bekommst.
Eingerückt wird immer mit 4 Leerzeichen pro Ebene, niemals Tabs und Leerzeichen mischen. Du mußt Deinen Editor so einstellen, dass er beim Drücken der Tab-Taste automatisch Leerzeichen einfügt.
Zwischen Funktionsname und öffnender Klammer kommt kein Leerzeichen, dagegen nach Komma und um == fehlen zum Teil die Leerzeichen.

wert1 und wert2 sind schlechte Namen für einen Nutzernamen oder ein Passwort.

Re: Programmcode zeigt Fehler!!

Verfasst: Freitag 4. Dezember 2020, 10:50
von peterpy
Hallo Kla-Sur ,
die return Anweisung ist immer am Schluss einer Funktion.
Wenn die Eingabe falsch ist, fehlt dir ein else
Ist die Eingabe korrekt, solttest Du eine neue Funktion aufrufen, um Login erfolgreich mitzuteilen.
Am Schluss dieser neuen Funktion kannst Du dann das return True setzen.
Gruss Peter

Re: Programmcode zeigt Fehler!!

Verfasst: Freitag 4. Dezember 2020, 11:21
von Sirius3
@peterpy: nein, alle returns sind korrekt. Man kann auch innerhalb einer for-Schleife ein `return` einbauen, um die Schleife im Erfolgsfall gleich abzubrechen.
Dass der Login erfolgreich war, wird ja durch den Rückgabewert (True oder False) mitgeteilt, warum sollte man da noch eine weitere Funktion aufrufen?

Kann man natürlich auch ohne for-Schleife schreiben, dann wird es vielleicht klarer:

Code: Alles auswählen

LOGIN_DATEN = [
    ("karl01", "abcde"),
    ("*susi*", "3107"),
    ("00xyz00", "a7r9f3"),
    ("martin.mueller", "martin"),
]

def registrierung(nutzername, passwort):
    if (nutzername, passwort) in LOGIN_DATEN:
        print("Login erfolgreich!")
        return True
    else:
        print("Nutzernamen und Passwort stimmen nicht überein!")
        return False

def main():
    nutzername = input("Geben Sie bitte Ihren Nutzernamen ein: ")
    passwort = input("Geben Sie bitte Ihr Passwort ein: ")
    angemeldet = registrierung(nutzername, passwort)
    if not angemeldet:
        print("Tschüss")
        return
    print("hier geht's weiter")

if __name__ == '__main__':
    main()

Re: Programmcode zeigt Fehler!!

Verfasst: Freitag 4. Dezember 2020, 11:48
von Kla-Sur
Hallo und danke für die Hilfe!

Das kleine Programm kommt aus einem Lehrbuch. Habe es sogar kopiert um keinen
Tippfehler zu erzeugen. Hat noch jemand eine Empfehlung für ein Lehrbuch !!

Gruß Klaus

Re: Programmcode zeigt Fehler!!

Verfasst: Freitag 4. Dezember 2020, 12:01
von Bolitho
Meine Empfehlung:
Python Basics:
A Practical Introduction to Python 3

Go from beginner to intermediate in Python with this complete curriculum, up-to-date for Python 3.9.
Python Basics includes exercises, interactive quizzes, and sample projects, so you’ll always know what to focus on next in order to build a strong Python foundation.

https://realpython.com/products/python-basics-book/

Podcast zum Buch: https://realpython.com/podcasts/rpp/32/

Ich habe es zwar nicht gelesen, aber den Podcast gehört und Real Python liefert konstant qualitativ hochwertige Inhalte.

Re: Programmcode zeigt Fehler!!

Verfasst: Freitag 4. Dezember 2020, 12:10
von Sirius3
Wie hast Du es denn kopiert? Der Programmcode, den es im Netz zum Runterladen gibt, ist zwar nur mit 2 Leerzeichen eingerückt, aber sonst ohne Syntaxfehler.
Es gibt kein gutes Einsteigerbuch in Deutsch. Fast alle scheitern schon an den primitivsten Konventionen, zeigen Code, den man unter keinen Umständen so schreiben sollte oder darf und übertragen Konzepte falsch von anderen Programmiersprachen auf Python.
Da hilft nur mit verschiedenen Quellen zu arbeiten, und von keiner zu erwarten, dass sie fehlerfrei ist (außer natürlich dieses Forum hier).

Re: Programmcode zeigt Fehler!!

Verfasst: Freitag 4. Dezember 2020, 13:29
von Kla-Sur
Welch Glück das es dieses Forum gibt!

Ich habe mir Python 3.9 auf meinem Win10 Rechner installiert und lese digital ein Buch mit einem Pdf-Reader. Interessante Programme kopiere ich mir dann in mein Notepad++ und speichere sie als
*.py datei ab. Wenn ich die *.py Datei ausführen möchte gehe in die "Dos-Console" wechsel ins passende Verzeichnis und starte es !

Danke Bolitho, werde mir deine Empfehlung anschauen !

Gruß Klaus

Re: Programmcode zeigt Fehler!!

Verfasst: Samstag 5. Dezember 2020, 18:29
von Nufnus
Hallo,

vielleicht möchtest du dir Microsoft Visual Studio Code (Mit dem "Code" im Namen) mal anschauen.
Das ist eine kostenlose, schlanke Entwicklungsumgebung und finde ich persönlich zum Python programmieren angenehmer als "nur" einen Texteditor (zugegeben einen guten) mit Syntaxhighlighting.
Mit Visual Studio Code und der Python Extension hast du dann auch einen Debugger zur Verfügung und kannst damit Fehler aufspüren / Zeile für Zeile nachvollziehen was dein Code macht. Ich glaube das geht in notepad++ nicht so ohne weiteres oder?
Auch falls du irgendwann später mal mit einer Versionsverwaltung wie GIT arbeiten möchtest würde das mit Visual Studio Code gehen.

Gruß