我是初學者,我在創建登錄系統時遇到了麻煩,每次輸入正確的密碼和用戶名時,它都會顯示不正確。有人請幫我。它必須使用文本檔案,請盡量不要使用函式。
while True:
f = open("password.txt", mode="r")
data = f.readline()
username = input("Please enter your username: ")
password = input("Please enter your password: ")
data2 = username ',' password
if (data == data2):
print("Logged in successfully as" username)
break
else:
print('Incorrect')
uj5u.com熱心網友回復:
# you don't have to close the file using this approach
with open("password.txt", mode="r") as f:
username = input("Please enter your username: ")
password = input("Please enter your password: ")
data = username ',' password
# set a parameter to flag if uname,pass is found
success = False
# reading each line from the file
for line in f.readlines():
# compare the line with newline removed to input
if line.strip() == data:
success = True
break
if success:
print("Logged in successfully as " username)
else:
print("Incorrect")
您只閱讀了第一行(我假設有多個用戶,并且每個用戶都在一行上。)您還需要去除換行符\n才能成功匹配輸入。
uj5u.com熱心網友回復:
passwords.txt如果您的檔案中有不止一行,f.readline()將在最后回傳一個附加資訊\n,這將使您的比較錯誤。正如@Keith 提到的,您可以使用strip函式來解決這個問題。
否則,您可以在代碼中添加列印陳述句以查看問題所在:
f = open("password.txt", mode="r")
data = f.readline()
f.close()
print('Expected:', data)
while True:
username = input("Please enter your username: ")
password = input("Please enter your password: ")
data2 = username ',' password
print('User input:', data2)
if (data == data2):
print("Logged in successfully as" username)
break
else:
print('Incorrect')
您可能已經注意到,我還將檔案讀取代碼移出回圈。您不必每次都這樣做。f.close()在我們完成檔案后我也使用過,所以它沒有被鎖定。
uj5u.com熱心網友回復:
我可能完全忽略了一個簡單的語法錯誤,但我認為這段代碼沒有任何問題。如果它回傳您不正確的陳述句,您可能需要添加兩個列印陳述句來列印用戶輸入的內容以及與之進行比較的內容,以便您可以查看是否添加了空格或其他內容。列印陳述句應該看起來像這樣,我將它們放在 if 陳述句之上:
print(data)
print(data2)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/412403.html
標籤:
