python:我的代码没有循环到for循环中来读取csv

时间:2021-01-28 10:02:05

标签: python

我正在尝试创建一个代码,让两个预先存在的用户可以登录到一个帐户,并且它是从 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()

2 个答案:

答案 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