2017-10-21 100 views
-1

Je veux créer un portail d'inscription de classe utilisateur et pour cela je voulais ajouter quelques noms d'utilisateur. Mais si elles sont déjà prises, le code doit inviter l'utilisateur à ajouter un autre nom d'utilisateur et j'ai essayé de le faire avec ce code.nom d'utilisateur entrée et correspondant à l'aide de python- (coincé dans while loop)

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 :") 

Mais il est bloqué dans la boucle et affiche le message suivant à plusieurs reprises même après la saisie d'un nom d'utilisateur valide. Qu'est ce que je fais mal?

"Nom d'utilisateur déjà pris"

+0

nom de variable typo à la dernière ligne probablement. Btw, pourquoi avez-vous ajouté la balise 'class' s'il n'y a pas de' classe' dans l'extrait fourni? –

Répondre

1

qui résoudra tous vos problèmes avec boucle.

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

P.S. Je vous recommande vivement de lire Dive Into Python et The Zen of Python

+0

Merci cela a fonctionné. –

-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

Bien que ce fragment de code puisse résoudre la question, [y compris une explication] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) aide vraiment à améliorer la qualité de votre message. Rappelez-vous que vous répondez à la question pour les lecteurs dans le futur, et que ces personnes pourraient ne pas connaître les raisons de votre suggestion de code. –

+0

je l'ai fixé pour vous^appréciez –

1

Voici une version plus pythonique de votre code, qui est plus facile à comprendre et à corriger:

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

Notes:

  • Utilisez toujours bas cas pour les noms de variables.
  • Utilisez in au lieu de boucler explicitement les utilisateurs dans la boucle.
  • Évitez break dans une boucle while et changez plutôt la valeur de votre condition de boucle.
+0

Vous ne pouvez pas éditer des réponses, pouvez-vous? –

+0

il semble que nous avons écrit nos réponses en même temps. Je n'ai pas volé ton code si c'est ce que tu penses arrivé. – SaturnFromTitan

+0

Peu importe, parce que je devais paresseux, d'écrire pourquoi mon code est meilleur que celui fourni. –