2012-05-06 20 views
0

私は通信する別々のスクリプトから2つの関数を持っています。起こるべきことは、値が存在する場合、変数は%username%に設定する必要があります。値が存在しない場合は、 "None"に設定する必要があります。変数がnoneに設定されている場合、関数は継続して新しいアカウントを作成する必要があります。変数がユーザー名に設定されている場合、関数は続行する必要があります。だから、なぜ私は一貫性のない、不安定な結果を得ているのですか?Python値の混乱

機能に従うよう、彼らは含まれていない他の関数を呼び出すように、彼らは実行されません。ご注意下さい

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 

を、私はセキュリティのため、実際のパスワード暗号化アルゴリズムが含まれていない - 私は設定していますこの例では16進数にエンコードします。

は編集:私は)(random.choiceを呼び出していたかのように

は、それはほとんど、私は関数は、新しいユーザーを作成するかどうかに関係するすべての一貫性を見つけることができませんされて説明し忘れた、またはことを私に伝えますユーザー名はすでに使用されています。

+0

あなたが "不安定" の結果を説明できなければなりませんか? – jdi

+0

@jdi元の投稿を編集しました。それを指摘してくれてありがとうございます。 – abkai

+0

私は、暗号化は一般的にかなり公表されていることは注目に値すると思います。このパラダイムは実際に私たちの暗号化アルゴリズムを大幅に改善しました。十分な大きさの鍵(または何を持っているか)を備えた強力なアルゴリズムを使用している場合、それについて知る人はあまり心配しないでください。 – Paragon

答えて

0

不等式の少なくとも1つが真であるため、既存のユーザーのコードは常にトリガーされます。

if (usr != "None") or (usr != None): 
     print usr 
     print "Username already taken!" 
     pause() 

条件は

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