Hilfe bei Namenprüf-Problem

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
DerBlaeckI
User
Beiträge: 3
Registriert: Mittwoch 14. Juni 2017, 16:42

HI also ich bin dabei ein Login Programm zu schreiben und bin dabei auf ein Problem gestoßen:

Code: Alles auswählen

exists = False
for i in names:
      if name in i:
            exists = True
Hier soll aus einer Liste(names) mit Kontonamen geschaut werden ob der Name überhaupt existiert.
Problem dabei wenn eine Konto mit dem Name "Timo" existiert und man nach Tim frag wird exists True gesetzt,
obwohl kein Konto mit Tim existiert.
Hätte da jemand eine Lösung für? :K
Vielen Dank
mfG DerBlaeckI
Zuletzt geändert von Anonymous am Samstag 17. Juni 2017, 11:55, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Sirius3
User
Beiträge: 17746
Registriert: Sonntag 21. Oktober 2012, 17:20

@DerBlaeckI: ganz einfach.

Code: Alles auswählen

exists = name in names
BlackJack

@DerBlaeckI: Du testest ob der gesuchte Name irgendwo in einem der Namen enthalten ist, und das trifft bei 'Tim' und 'Timo' offensichtlich zu. Du möchtest prüfen ob der gesuchte Namen *gleich* einem der Namen in der Liste ist.

Anmerkungen zum Quelltext: Laufariablen in Schleifen nur `i` nennen wenn es sich um eine ganze Zahl handelt. Alles andere ist sehr verwirrend für den Leser.

Nachdem der Name gefunden wurde, braucht man ja nicht mehr weiter suchen. An der Stelle kann man die Schleife mit ``break`` verlassen.

Letztlich brauchst Du die Schleife aber auch überhaupt gar nicht, denn es gibt ja den ``in``-Operator auf Listen. Damit ist das ein Einzeiler:

Code: Alles auswählen

exists = name in names
DerBlaeckI
User
Beiträge: 3
Registriert: Mittwoch 14. Juni 2017, 16:42

OK vielen Dank euch zwei, es hat mein Problem gelöst. :D
@BlackJack das mit i als ganze Zahl Variable werd ich in Zukunft beachten, danke. ;)

MfG DerBlaeckI
Antworten