2017-08-03 90 views
-2

下面的一段代码打算询问所需的用户名,然后创建它。为什么这个'if'块没有执行

我想告诉用户用户名已被占用。这样可行。

但是,无论何时输入用户名还不存在,我都希望所有的if a != 1:块都能够执行,但这不会发生。这是为什么?

这里是我已经缩小到发生问题的代码片段:

UsernameRequest = input("What would you like your username to be set? ") 
fname = UsernameRequest + ".txt" 
try: 
    f2 = open(fname, 'r') 
    a = f2.readline(1) 
    if a == "a": 
     print ("This username is already taken!") 
     f2.close() 
     a = 1 
except: 
    b = 1 

if a != 1: 
    f = open(fname, 'w') 
    PasswordRequest = input("What would you like your password to be? ") 
    f.write("abcde" + '\n') 
    f.write(UsernameRequest) 
    f.write('\n' + PasswordRequest) 
    f.close() 
    print ("User created! Welcome to SterlOS!") 
    Login() 
    break 
+1

我从来没有见过以'elif'开头的程序。 –

+0

在尝试之前做'a = 0' – Carlos

+0

有一个简单的方法可以保留一个持久的用户名记录,而不是每个包含字母“a”的文本文件。对于serilialization,请考虑使用'pickle'或'json'或'shelve'或一个完整的数据库。 – Kevin

回答

0

我觉得变量a的范围是这里的问题。尝试在try块之外声明a