2017-10-21 113 views
-1

我想创建一个基于用户注册门户网站并为此我想添加一些用户名。但是,如果它们已被占用,那么代码应该提示 用户添加另一个用户名,我试图用此代码来完成此操作。用户名输入和匹配使用python-(陷入while循环)

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

但它会变得输入有效的用户名后反复 停留在循环,并显示以下信息。我做错了什么?

“用户名已采取”

+0

变量名可能是最后一行的错字。顺便说一句,如果在提供的代码段中没有'class',为什么还要添加'class'标签? –

回答

1

将修复与循环您的所有问题。

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

P.S.我强烈建议您阅读Dive Into PythonThe Zen of Python

+0

感谢它的工作。 –

-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

虽然此代码片段可能会解决问题,但[包括解释](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)确实有助于提高帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。 –

+0

我为你修复^享受 –

1

这是你的代码的一个更Python版本,这是容易理解和修复:

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

注:

  • 始终使用低情况下的变量名称。
  • 使用in而不是循环显式地循环用户。
  • 避免break在一个while循环,而是改变你的循环条件值 。
+0

你不能编辑答案,你能吗? –

+0

它看起来像我们在同一时间写我们的答案。如果这就是您的想法,我没有窃取您的代码。 – SaturnFromTitan

+0

没关系,因为我懒得写,为什么我的代码比提供的更好。 –