2017-08-03 3 views
-2

以下のコードは、希望するユーザー名を尋ねてそれを作成しようとしています。この `if`ブロックはなぜ実行されないのですか

ユーザー名が既に取得されたときにユーザーに伝えたいと思います。それは動作します。

しかし、まだ存在しないユーザー名が入力されたときは、if a != 1:ブロックのすべてを実行したいが、それは起こらない。何故ですか?私は、変数aの範囲はここでの問題だと思う

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」を含むテキストファイルを作成するよりも、取得したユーザー名を永続的に記録する方が簡単です。直列化のためには、 'pickle'や' json'や 'shelve'や本格的なデータベースの使用を検討してください。 – Kevin

答えて

0

:ここ

は、私は、問題が発生した場所に絞ってきたコードの抜粋です。 tryブロックの外側にaと宣言してみてください。

関連する問題