2017-10-21 5 views
-1

Ich möchte eine Klasse basierend Benutzerregistrierungsportal erstellen und dafür wollte ich einige Benutzernamen hinzufügen. Aber wenn sie bereits vergeben sind, sollte der Code den Benutzer auffordern, einen weiteren Benutzernamen hinzuzufügen, und ich habe versucht, dies mit diesem Code zu tun.Benutzername Eingabe und Abgleich mit Python- (Stuck in While-Schleife)

a=0 
User=['name123'] 
username=raw_input("Enter username : ") 
while a==0: 
    for i in User: 
     if i==username: 
     a=0 
     break 
     else: 
     a=1 
    if a==0: 
     usernarme=raw_input("Username already taken.\nEnter another username :") 

aber es wird in der Schleife und zeigt die folgende Meldung wiederholt auch nach Eingabe eines gültigen Benutzernamen fest. Was mache ich falsch?

"Username bereits vergeben"

+0

Variablenname Tippfehler in der letzten Zeile wahrscheinlich. Btw, warum hast du das 'class' Tag hinzugefügt, wenn es keine' Klasse' im bereitgestellten Snippet gibt? –

Antwort

1

, die alle Ihre Probleme mit Schleife beheben.

User=['name123'] 
username=raw_input("Enter username : ") 
while username in User: 
    username=raw_input("Username already taken.\nEnter another username :") 

P.S. Ich empfehle Ihnen dringend Dive Into Python und The Zen of Python

+0

Danke es funktionierte. –

-1
a = 0 
while a==0: 
a=0 
User=['name123'] 
username=input("Enter username : ") 
for i in User: 
    if i==username: 
    a=0 
    else: 
    a=1 
if a==0: 
    username=input("Username already taken.\nEnter another username :") 
    a = 1 
+1

Während dieses Code-Snippet die Frage lösen kann, [hilft eine Erklärung] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) wirklich, um die Qualität Ihres Beitrags zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. –

+0

ich reparierte es für dich^enjoy –

1

Hier ist eine weitere pythonic Version des Codes zu lesen, das ist einfacher zu verstehen und zu beheben:

users = ['name123'] 
username = raw_input("Enter username : ") 
while username in users: 
    username = raw_input("Username already taken.\nEnter another username :") 

Hinweise:

  • Verwenden Sie immer niedriger Fall für Variablennamen.
  • Verwenden Sie in, anstatt Benutzer explizit in der Schleife zu durchlaufen.
  • Vermeiden Sie break in einer while-Schleife und ändern Sie lieber den Wert Ihre Schleife Zustand.
+0

Sie können Antworten nicht bearbeiten, oder? –

+0

Es scheint, als hätten wir unsere Antworten gleichzeitig geschrieben. Ich habe deinen Code nicht gestohlen, wenn du denkst, dass das passiert ist. – SaturnFromTitan

+0

Ist nicht wichtig, weil ich zu faul war, um zu schreiben, warum mein Code besser ist als der zur Verfügung gestellte. –