我正在尝试创建一个代码,让两个预先存在的用户可以登录到一个帐户,并且它是从 csv 文件授权的 - 然后这些玩家可以玩骰子游戏。我已经完成了游戏,但是我的代码没有读取我的循环以及用于读取 csv 的信息。我尝试了许多不同的方法,包括简单地单独读取行、拆分行和许多其他事情。我的代码不返回任何错误,而是只运行代码,而不对用户进行身份验证。我将需要代码来搜索用户名,如果存在,请检查右侧框中的密码是否与代码中给出的密码匹配,打印用户已登录。如果用户和密码不匹配,让用户再输入两次密码,如果密码仍然不匹配,则无法登录。
任何帮助将不胜感激,谢谢。
import csv #importing my csv with my authenticated users in
import random #importing random to use to generate a random number
def login1(): #creating a function so i can do the login cycle again
loggedin1 = False #making user1 not logged in
global username
username = input("Please enter your username:")# ask the users username
password = input("Please enter your password:")#ask user for password
with open("game.csv","r+")as csvfile: # opening my csvfile
datareader = csv.reader(csvfile, delimiter=',') #reading my csv file
for row in datareader:
user = line.split(",")
user = user[0]
print(user) # to test if it is running this
if username == user:
print("User name exists")
for row in datareader:
passw = line.split(",")
passw = passw[0]
if password == passw:
print("hello",username,"you are logged in")
else:
password =input("Password is wrong, please try again")
elif userexists == False:
print("no username found, please enter the username again")
login1()
return(username)
login()
答案 0 :(得分:0)
始终以列表或字典的形式保存数据,因为它们更易于操作且可变。 data=[username,password] 或 {'username':username,'password':password}
读取 csv 文件:
def login():
f=open('data.csv','r')
reader=csv.reader(f)
u=input('Username: ')
p=input('Password: ')
for row in reader:
try:
if row[0]==u and row[1]==p:
print('SUCCESS')
break
except EOFError:
print('FAILED')
break
每当用户登录失败时再次调用该函数。
答案 1 :(得分:0)
根据您的要求:
def login():
f=open('data.csv','r')
reader=csv.reader(f)
u=input('Username: ')
p=input('Password: ')
for row in reader:
try:
if row[0]==u:
if row[1]==p:
print('SUCCESS')
break
else:
print('INCORRECT PASSWORD')
except EOFError:
print('USER NOT FOUND')
break