2017-08-03 43 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