混淆python值

混淆python值,python,Python,我有两个来自单独脚本的函数进行通信。如果存在值,则应将变量设置为%username%;如果该值不存在,则应将其设置为“无”。如果变量设置为“无”,则函数应继续并创建新帐户。如果变量设置为用户名,则函数应继续。那么,为什么我会得到不一致、不稳定的结果呢 函数如下所示,它们不会在调用其他未包含的函数时运行: def database_get_user_details(user_database, username, detail): value = "None" rows = ((u

我有两个来自单独脚本的函数进行通信。如果存在值,则应将变量设置为%username%;如果该值不存在,则应将其设置为“无”。如果变量设置为“无”,则函数应继续并创建新帐户。如果变量设置为用户名,则函数应继续。那么,为什么我会得到不一致、不稳定的结果呢

函数如下所示,它们不会在调用其他未包含的函数时运行:

def database_get_user_details(user_database, username, detail):
    value = "None"
    rows = ((users_db_curs.execute("SELECT * FROM '" + user_database + "' WHERE username='" + username + "'"))).fetchall()
    for row in rows:
        if rows:
            if detail   == ("userID")     : value = str(row[1])
            elif detail == ("username")   : value = str(row[2])
            elif detail == ("password")   : value = str(row[3])
            elif detail == ("creator_exp"): value = str(row[4])
            else                          : value = "None"
        else:
            value = "None"
    return value

def game_register(username_table_name):
    while True:
        while True:
            user_ID = raw_input("E-mail address: ")
            if user_ID != "":
                break
        while True:
            username = raw_input("Username      : ")
            if username != "":
                break
        while True:
            password = raw_input("Password      : ")
            if password != "":
                password = password.encode("hex")
                break
        usr = database_get_user_details(username_table_name, username, "username")
        print usr
        if (usr != "None") or (usr != None):
            print usr
            print "Username already taken!"
            pause()
        else:
            database_create_user(username_table_name, user_ID, username, password, "250")
            print "Successfully created %s with password: %s" %(username, password.decode("hex"))
            pause()
            break
请注意,我没有包括实际的密码加密算法的安全性-我只是把它设置为编码十六进制在这个例子中

编辑:忘记解释了


就好像我在调用random.choice(),我找不到与函数是否创建新用户或告诉我用户名已被使用有关的任何一致性。

您为现有用户编写的代码将始终触发,因为至少有一个不一致性为真

if (usr != "None") or (usr != None):
        print usr
        print "Username already taken!"
        pause()
情况应该是这样的

if (usr != "None") and (usr != None):

你能解释一下你“不稳定”的结果吗?@jdi编辑了原始帖子,谢谢你指出这一点。我认为值得注意的是,加密通常是公开的。这个范例实际上极大地改进了我们的加密算法。如果您使用的是具有足够大密钥的强算法(或您拥有的),您不必太担心人们会发现它。对于初学者,请发布调用这些方法的代码部分,并且-您应该学习如何正确地执行此操作,看起来它总是会告诉您用户名已被使用。