我正在做一个Python项目,我必须从csv文件中验证我的用户名和密码,其中前两行和两列的用户名和密码均为“ hi”。
当前代码:
answer = input("Do you have an account?(yes or no) ")
if answer == 'yes' :
login = False
csvfile = open("Username password.csv","r")
reader = csv.reader('Username password.csv')
username = input("Player One Username: ")
password = input("Player One Password: ")
for row in reader:
if row[0]== username and row[1] == password:
login = True
else:
login = False
if login == False:
print("Incorrect. Game Over.")
exit()
else:
print("You are now logged in!")
else:
print('Only Valid Usernames can play. Game Over.')
exit()
答案 0 :(得分:0)
我假设.csv
文件包含用户名和密码的列表,这就是循环浏览文件的原因。
首先,我认为您的条件不正确。如果login == True
,您当前失败了吗?不确定为什么会这样。
此外,更大的问题是循环。它会覆盖正确的数据。
例如,如果第一行与给定的凭据匹配,则需要授权用户。但是在您的情况下,循环将继续并继续检查其余行,从而覆盖login
的值。因此,当循环结束时,login
的值基于最后一行。
找到正确的用户名和密码后,您需要退出循环。
我还建议您首先从dict
文件创建用户名和密码的字典(csv
),以使您的生活更轻松。
答案 1 :(得分:0)
这就是你想要的
首先,您的登录逻辑错误 为了方便起见,我更改了文件名
import csv
login = False
answer = input("Do you have an account?(yes or no) ")
if answer == 'yes' :
with open('upassword.csv', 'r') as csvfile:
csv_reader = csv.reader(csvfile)
username = input("Player One Username: ")
password = input("Player One Password: ")
for row in csv_reader:
print(row[0], row[1])
print(username, password)
if row[0]== username and row[1] == password:
login = True
break
else:
login = False
break
if login == True:
print("You are now logged in!")
else:
print("Incorrect. Game Over.")
exit()
else:
print('Only Valid Usernames can play. Game Over.')
exit()
我还有一些打印声明,以帮助您了解工作流程
并尝试避免打开这样的文件
csvfile = open("Username password.csv","r")