我有来自不同脚本的2个函数进行通信。应该发生的是,如果存在值,则应将变量设置为%username%;如果该值不存在,则应将其设置为“None”。如果变量设置为none,则该函数应继续并创建一个新帐户。如果变量设置为用户名,则该函数应继续。那么,为什么我会得到不一致,不稳定的结果?
函数如下,它们不会运行,因为它们调用其他未包含的函数:
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()一样,我找不到与该函数是否创建新用户有关的任何一致性,或者告诉我该用户名已经被使用过。
答案 0 :(得分:0)
现有用户的代码将始终触发,因为至少有一个不等式是真的。
if (usr != "None") or (usr != None):
print usr
print "Username already taken!"
pause()
条件应为
if (usr != "None") and (usr != None):