Problem mit kleinem Programm

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
silent_user
User
Beiträge: 2
Registriert: Sonntag 6. September 2009, 14:22

Hi Leute,
ich sollte für die Schule ein kleines Programm schreiben.
Dabei ging es um einen kleinen "Login" zweier ausgewählter Benutzer.

Name = raw_input("Bitte Namen eingeben.")
Passwort = raw_input("Bitte Passwort eingeben.")
repeat = True
while true:
if Name == 'Klaus':
[] if Passwort == 'blabla':
[][] print 'Willkommen Herr Klaus'
[][] repeat = False
elife Name == 'Iris':
[] if Passwort == 'bluemchen':
[][] print 'Willkommen Frau Iris'
[][] repeat = False
Die Benutzer heißen in diesem Fall "Klaus" und "Iris".
Meine Idee war es den Benutzer ersteinmal seine Daten eingeben zu lassen.
Um es möglichst kurz zu halten, da die beiden Zeilen sonst in jedem "Benutzer-Block" in der repeat-Schleife vorkommen müssten.

Um zu meinem Problem zu kommen: An der markierten Stelle sagt er mir "invalid syntax". Da der "Iris-Block" und der "Klaus-Block" eigentlich den gleichen Aufbau haben, bin ich vollkommen ratlos, wo das Problem liegt.

Wir haben bisher nur eine Stunde mit Python gehabt, also bitte ich darum, eure Antworten nicht zu kompliziert zu machen.
Alternative Wege wären auch super, aber besonders wichtig ist es mir, zu wissen, warum in diesem Fall ein Fehler auftritt.

Danke schonmal im Vorraus
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

Du hast da nen Tippfehler: elife --> elif

Ich würde das Programm aber so schreiben:

Code: Alles auswählen

user_db = dict() # Name -> Passwort
user_db['Klaus'] = 'blabla'
user_db['Iris'] = 'bluemchen'

while true:
  login_name = raw_input("Bitte Namen eingeben: ").strip()
  login_passwort = raw_input("Bitte Passwort eingeben: ").strip()
  if login_name in user_db:
    if user_db[login_name] == login_passwort:
      print "Hallo %s" % login_name
      break
    else:
      print "Login fehlgeschlagen."
Bottle: Micro Web Framework + Development Blog
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Oder alternativ eine ``for``-Schleife, wenn man die Anzahl beschraenken will:

Code: Alles auswählen

for try_ in xrange(3):
    ...
else:
    print "3 Versuche fehlgeschlagen. Sperre fuer 23 Minuten."
Und fuer die Zukunft: bitte benutze Code-Tags
silent_user
User
Beiträge: 2
Registriert: Sonntag 6. September 2009, 14:22

Vielen Dank für die schnellen Antworten.

Bin erleichtert, dass es nur nen Schreibfehler war.
Werd mir das mit Code-Tags fürs nächste Mal zu Herzen nehmen und die alternativ Lösungen ausgiebig studieren.

cYa :D
Antworten