0

ユーザーにユーザー名とパスワードを要求し、正しいテキストまたは間違ったテキストをログファイルに記録する基本的なログイン プログラムを作成しようとしています。私が抱えている問題は、複数のユーザー名とパスワードの組み合わせを使用しようとすると、構文エラーが発生することです。

#login program
output = open("logfile.txt", 'a')
login = input("please enter the correct username and password\n")
a = "username password"
b = "username1 password1"

if a in login:
    print("successfully logged in")
    import time
    localtime = time.asctime(time.localtime(time.time()))
    output.write("Somebody successfully logged in at ")
    output.write(localtime)
    output.write("\n")
    output.close()
if b in login:
    print("successfully logged in")
    import time
    localtime = time.asctime(time.localtime(time.time()))
    output.write("Somebody successfully logged in at ")
    output.write(localtime)
    output.write("\n")
    output.close()

else:
    print("access denied.")
    import time
    output = open("logfile.txt", "a")
    localtime = time.asctime(time.localtime(time.time())
    output.write("Somebody unsuccessfully logged at ")
    output.write(localtime)
    output.write("\n")
    output.close()

エラー:

  File "test.py", line 28
    output.write("Somebody unsuccessfully logged at ")
         ^
SyntaxError: invalid syntax
4

2 に答える 2

7

else:ブロックに閉じ括弧がありません:

output = open("logfile.txt", "a")
localtime = time.asctime(time.localtime(time.time())
                                  #-----------------^

これにより、Python は次の行で構文エラーを報告します。あなたがする必要があるのは、欠けているものを追加することだけ)です; あなたは3つの開き括弧を持っていますが、閉じは2つしかありません。

于 2013-09-19T21:42:15.983 に答える
2

Martijn の回答にもう少し追加するために、python インタープリターは括弧内の改行を取り除きます。だから、Python インタプリタは、見るのではなく

localtime = time.asctime(time.localtime(time.time()))
output.write("Somebody unsuccessfully logged at ")

(正しい括弧が追加されました)、通訳者は実際に見ます

localtime = time.asctime(time.localtime(time.time()) output.write("Somebody unsuccessfully logged at ")

time.asctimeoutput.write("Somebody unsuccessfully logged at ")の別の引数です。これは明らかに、無効な構文に関するエラーをスローします。何が起こっているのか、そしてエラーが予想される場所の 1 行後に表示される理由について、もう少し理解を深めていただければ幸いです。

于 2013-09-19T22:19:05.133 に答える