找回密码
 立即注册
首页 python python-基础 查看内容

将正确的结果传递出认证循环


我正在创建一个登录系统,该系统检索输入框中的详细信息并将其与数据库的详细信息进行比较。如果在数据库中找到输入的详细信息,Bottom()则运行该功能。如果未找到详细信息,则要求用户再试一次。

目前,程序循环直到找到它。但是,因为我已经设置了else语句,如果数据库中的第一项不是输入的详细信息,该else部分仍将运行。有没有一种方法,我可以改变这种做法,else是else 和 last value in the database?

这是功能:
#Retrieves the information entered into entry box
def Get_Details():
    user_namev2=user_name.get().lower() #Make it so entry box goes red if passwords password is incorrect, and red if username is incorrect/not fault
    user_passwordv2=user_password.get().lower()
    with open ('Accounts.csv', 'r') as Account_file:
        reader = csv.reader(Account_file)
        for row in reader:
            for field in row:
                if row[0] == user_namev2 and row[1] == user_passwordv2:
                    Bottom()
                    break
                else:
                    nomatch_label = Label(canvas, width = 40, height = 2, text = "USERNAME AND PASSWORD NOT FOUND", fg = "red", bg = "gray21", font = font2)
                    canvas_nomatch_label = canvas.create_window(500, 550, window = nomatch_label)
                    name_entry.config(fg = "red")
                    password_entry.config(fg="red")
                    break


解决方法


这应该按照您的预期方式工作,现在它循环遍历行并检查用户名/密码row[0]和row[1]。如果找到匹配则会中断并且不会执行连接到for循环的else。

此外,我删除了for循环,row因为field无论如何都没有使用变量。
#Retrieves the information entered into entry box
def Get_Details():
    user_namev2=user_name.get().lower() #Make it so entry box goes red if passwords password is incorrect, and red if username is incorrect/not fault
    user_passwordv2=user_password.get().lower()
    with open ('Accounts.csv', 'r') as Account_file:
        reader = csv.reader(Account_file)
        for row in reader:
            if row[0] == user_namev2 and row[1] == user_passwordv2:
                Bottom()
                break
        else:
            nomatch_label = Label(canvas, width = 40, height = 2, text = "USERNAME AND PASSWORD NOT FOUND", fg = "red", bg = "gray21", font = font2)
            canvas_nomatch_label = canvas.create_window(500, 550, window = nomatch_label)
            name_entry.config(fg = "red")
            password_entry.config(fg="red")

分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册