【问题标题】:Instead of printing each element in tuple, Python prints lettersPython不是打印元组中的每个元素,而是打印字母
【发布时间】:2022-01-25 14:44:13
【问题描述】:

我尝试通过从 MySQL 获取数据来创建验证器。从 MySQL 获取数据后,我有一个包含 2 个元组的列表。但是当我尝试在元组中打印元素时,我的代码不是从元组中打印元素,而是打印了每个元素的字母。这是我的代码:

from tkinter import *
from tkinter import messagebox
from mysqlconnect import my_connect
from mysqlconnect import my_cursor


mysql_get_all_user_information_query = "SELECT user_name, user_password FROM USER_INFORMATION"
my_cursor.execute(mysql_get_all_user_information_query)
all_information_record = list(my_cursor.fetchall())


def validator_username_password():
    global all_information_record

    username = entry_username.get()
    password = entry_password.get()

    if username == "" and password == "":
        messagebox.showinfo("", "Blank Field Are Not Allowed")
    for user_record in all_information_record:
        for user_name_pass in user_record:
            print(user_name_pass[0])
            print(user_name_pass[1])
            if username == user_name_pass[0] and password == user_name_pass[1]:
                messagebox.showinfo("", "Login Success")
                root.destroy()
            else:
                messagebox.showinfo("", "Incorrent Username and Password")

这是输出(我有 account1: admin,密码:123456 account2: admin123,密码:123456):

非常感谢大家!!!

编辑:当我只使用 1 个 for 循环时,我得到 2 个元组。

【问题讨论】:

  • 我不知道将密码放在网络上的策略。代码的问题是,如果您遍历一个列表,然后遍历该列表中的字符串,就会发生这种情况:一个字母一个字母地显示。
  • 从数据库中获取数据后,我得到一个包含 2 个元组的列表。我遍历一个列表以获取元组,然后遍历元组以获取包括用户名和密码在内的元素。
  • 第二次迭代不需要,可以访问第一次迭代的用户名和密码。嵌套的 for 循环通常也是一个性能问题。
  • 不胜感激看看下面的答案:)

标签: python list tuples


【解决方案1】:

您自己解释了您在 cmets 中的情况。您不再拥有元组,但您仍在为其编制索引。 IMO,您不需要嵌套循环(甚至证明您的逻辑错误),这是检查用户名和密码的示例(非tkinter示例):

lst = [('u1','p1'),('u2','p2')]

def login():
    for item in lst:
        u_name = item[0]
        p_name = item[1]
        if u_name == username and p_name == password:
            print('Successfully logged in')
            break
        else:
            print('Wrong credential')
            break

username = 'u1'
password = 'p1'

login()

【讨论】:

    猜你喜欢
    • 2019-12-02
    • 1970-01-01
    • 1970-01-01
    • 2016-07-04
    • 1970-01-01
    • 2013-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多